【发布时间】:2011-10-11 18:15:38
【问题描述】:
我有 6 个类都执行相同的操作。我想将常见的行为移到一个常见的 [base] 类中。
需要对 6 个单独的对象执行操作。这六个对象位于派生类中。直观地说,私有成员对象将通过基类中的子类(派生类)访问。
我正在寻找的 C++ 模式是什么?
class Base
{
// Common behavior, operate on m_object
...
void Foo()
{
m_object.Bar();
}
};
class Derived1 : public Base
{
// No methods, use Base methods
private:
MyObject1 m_object;
}
class Derived2 : public Base
{
// No methods, use Base methods
private:
MyObject2 m_object;
}
让我陷入这种情况的是MyObject1、MyObject2 等提供Bar(),但不共享一个公共基类。我真的无法修复派生,因为对象来自外部库。
【问题讨论】:
-
您可以使用
ParentClass::method(args)在子类中调用 C++ 层次结构,如果这是您所要求的,但可能有更简单的方法来做您想做的事情,就像 Vlad 说的那样,模板。 -
您到底想达到什么目的?一些代码可以帮助我们帮助您。
-
Java 中的
super将您带到父类,而不是派生类。基类中的super会让你一事无成。 -
@Luchian Grigore:我扩展了问题陈述,但我认为这是一个失败的原因。
标签: c++ inheritance composition