对此可能已经存在一个问题,但我找不到。
我敢肯定有一个简单的解决方案,但我看不到。
假设您具有以下条件:
class FooBase
{
protected:
BarBase myInstance;
}
class FooChild : public FooBase
{
protected:
BarChild myInstance;
}
class BarChild : public BarBase
{
}
因此,基本上,您想在FooChild类中使用BarBase的派生版本。
我认为在上面的代码中,将有2个不同的myInstance实例(一个BarBase和一个BarChild)。
我只想拥有一个实例,这样我就可以在FooBase中使用BarBase,而在FooChild中使用BarChild。
有一个优雅的解决方案吗?
最佳答案
您是否可以尝试这样的操作,以便仅创建一个实例。
#include <iostream>
class BarBase
{
}
;
class BarChild : public BarBase
{
}
;
class FooBase
{
public:
FooBase(BarBase* baseBar);
protected:
BarBase* myInstance;
}
;
class FooChild : public FooBase
{
public:
FooChild(BarBase* base)
;
}
;
FooBase::FooBase(BarBase* baseBar)
{
myInstance = baseBar;
}
FooChild::FooChild(BarBase* childBar) : FooBase(childBar)
{
}
int main()
{
BarChild *bc = new BarChild();
FooChild fc(bc);
}
我不知道这是正确的解决方案还是优雅的解决方案;)
关于c++ - 继承类的组成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31586119/