我必须承认我很难提出这个问题,但我会尽力做到准确。我试图寻找我的问题的答案,但我怀疑我无法找到我正在寻找的东西,因为我不知道该怎么称呼它。
我有一个基类 A,以及从这个基类继承的几个子类。然后我创建另一个类 X,它继承自一些提到的子类。我现在面临的问题是 X 继承的每个类都有自己的 A 类实例。下面的代码应该可以更好地理解我的意思。
class A;
class B : public A;
class C : public A;
class X : public B, public C;
当 B 类和 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 的实例,这将是一个很好的解决方案。
这是可能吗?