我必须承认我在表述这个问题时遇到了困难,但我会尽力做到准确。我试图寻找我的问题的答案,但我怀疑我无法找到我正在寻找的东西,因为我不确定如何调用它。
我有一个基类 A,以及几个继承自该基类的子类。然后,我创建了另一个类 X,它继承了一些提到的子类。我现在面临的问题是 X 继承的每个类都有自己的 A 类实例。下面的代码应该可以更好地理解我的意思。
class A;
class B : public A;
class C : public A;
class X : public B, public C;
当 B 类和 C 类都作为同一类的间接基类时,是否有办法使它们共享 A 类的同一个实例?
为了举例说明我为什么想要这个,让我们看一下这段代码。
class A
{
int _x;
};
class B : public A
{
void outputX(){std::cout << A::_x << std::endl;
};
class C : public A
{
void setX(int x){A::_x=x;}
};
class X : public B, public C
{
C::setX(5);
// this will output an un-initialized _x,
// as B and C have their own version of A
B::outputX()
};
现在我意识到在这个例子中这似乎是不必要的,但在我的实际情况下,我认为如果 B 和 C 在类 X 中共享 A 的实例将是一个很好的解决方案。
这有可能吗?
最佳答案
你可以通过使用虚拟继承来解决这个问题:
class B : virtual public A;
class C : virtual public A;
class X : virtual public B, virtual public C;
查看更多信息 the diamond problem .
关于c++ - 可以为间接基类共享基类实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259303/