Tengo una clase de contenedor simple de bajo nivel que es utilizada por una clase de archivo de más alto nivel. Básicamente, la clase de archivo utiliza el contenedor para almacenar modificaciones localmente antes de guardar una versión final en un archivo real. Algunos de los métodos, por lo tanto, se transfieren directamente de la clase contenedora a la clase de archivo. (Por ejemplo, Resize()
.)Métodos de copia del miembro
Acabo de definir los métodos en la clase de archivo para llamar a sus variantes de clase de contenedor. Por ejemplo:
void FileClass::Foo()
{
ContainerMember.Foo();
}
Esto, sin embargo, es cada vez más una molestia. ¿Hay una mejor manera de hacer esto?
Aquí está un ejemplo simplificado:
class MyContainer
{
// ...
public:
void Foo()
{
// This function directly handles the object's
// member variables.
}
}
class MyClass
{
MyContainer Member;
public:
void Foo()
{
Member.Foo();
// This seems to be pointless re-implementation, and it's
// inconvenient to keep MyContainer's methods and MyClass's
// wrappers for those methods synchronized.
}
}
Veo la composición aquí, no la herencia. ¿Me estoy perdiendo de algo? –
@Doug Estoy preguntando si hay una forma de heredar de la clase contenedor, o 'MyContainer' en mi ejemplo, por solo unos pocos métodos. (O una mejor solución, si hay una). Editaré la pregunta para que sea más clara. – Maxpm
En ese caso, parece que debes dividir MyContainer en una clase que tenga los métodos que deseas (y luego heredar de eso) y el resto de los métodos de MyContainer en una clase diferente. – dlev