【发布时间】:2011-08-22 01:30:20
【问题描述】:
我有一个简单的低级容器类,供更高级别的文件类使用。基本上,文件类在将最终版本保存到实际文件之前使用容器在本地存储修改。因此,一些方法直接从容器类传递到文件类。 (例如,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,仅用于几种方法。 (或者更好的解决方案,如果有的话。)我将编辑问题以使其更清楚。 -
在这种情况下,听起来您应该将 MyContainer 拆分为一个类,该类具有您想要的方法(然后从该类继承)以及 MyContainer 的其余方法在不同的类中。
标签: c++ oop inheritance methods class-design