多态对象成员 [英] Polymorphic object members
问题描述
我有以下问题。我有一个基类和几个继承自它的类。所有这些类都共享一个非常相似的接口,很可能不需要重载大多数共享方法。
I have the following problem. I have a base class and several classes inheriting from it. All those classes are sharing a very similar interface and will most probably not be required to overload most of the shared methods.
但是,他们都使用不同的成员对象
However, all of them are using different member objects that are derived from each other and share a very similar interface too.
class BaseClass
{
protected:
Com* com;
public:
void setReady()
{
com->setReady();
}
}
class DerivedClass : BaseClass
{
protected:
DerivedCom* com;
}
class Derived2Class : BaseClass
{
protected:
Derived2Com* com;
}
如何启用 DerivedClass
使用 setReady()
运行其版本 com
,而不是继承自 BaseClass
?
How can I enable DerivedClass
to have setReady()
run its version of com
instead of the one inherited from BaseClass
?
推荐答案
使用不同的Com实现构造你的实例。 (假设DerivedCom实现Com)
Construct your instances with different implementations of Com. (Assuming DerivedCom implements Com)
class BaseClass
{
protected:
Com* com;
public:
BaseClass(Com* c = new Com) : com(c)
{}
void setReady()
{
com->setReady();
}
}
class DerivedClass : BaseClass
{
public:
DerivedClass() : BaseClass(new DerivedCom)
{}
}
class Derived2Class : BaseClass
{
public:
Derived2Class() : BaseClass(new Derived2Com)
{}
}
这篇关于多态对象成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!