У меня есть простой, низкоуровневый контейнерный класс, который используется более высокоуровневым файловым классом. По сути, класс файла использует контейнер для хранения изменений локально, прежде чем сохранять окончательную версию в фактическом файле. Поэтому некоторые из методов переносятся непосредственно из класса контейнера в класс файлов. (Например, Resize()
.)Методы копирования от члена
Я только что определял методы в классе файлов для вызова их вариантов класса контейнера. Например:
void FileClass::Foo()
{
ContainerMember.Foo();
}
Это, однако, становится неприятностью. Есть лучший способ сделать это?
Вот упрощенный пример:
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.
}
}
Я вижу состав здесь, но не наследование. Я что-то упускаю? –
@Doug Я спрашиваю, есть ли способ наследовать от класса контейнера, или 'MyContainer' в моем примере, всего за несколько методов. (Или лучшее решение, если оно есть.) Я отредактирую вопрос, чтобы быть более ясным. – Maxpm
В этом случае кажется, что вы должны разделить MyContainer на класс, который имеет нужные вам методы (а затем наследовать) и остальные методы MyContainer в другом классе. – dlev