有什么方法可以在另一个类的更多实例上共享一个变量(类的对象)?静态成员不是我想要的。我知道一个变量(大对象)将在更多实例之间共享(但不是所有实例)。我怎么能用C ++做到这一点?谢谢你的帮助。
示例:
class ClassA {
public:
...
private:
ClassB object; // this variable will be shared among more instances of ClassA
}
答案 0 :(得分:5)
好吧,您需要将该成员移出该类,并存储指针。您还需要计算引用该独立对象的实例。这是很多工作,但幸运的是C ++标准库让你了解std::shared_ptr
:
class ClassA {
public:
// ...
private:
std::shared_ptr<ClassB> object; // this variable will be shared among more instances of ClassA
};
答案 1 :(得分:0)
你可以使用指针。
class B { ... }
class A {
...
B *b;
...
}
main() {
A a1, a2;
B *b1 = new B();
a1.b = b1;
a2.b = b1;
}
b
和a1
上的a2
成员引用相同的对象。
答案 2 :(得分:0)
我认为std :: shared_ptr可能就是你想要的。 在这种情况下,您的代码将是这样的:
class ClassA {
public:
...
private:
std::shared_ptr<ClassB> object; // this variable will be shared among more instances of ClassA
}
但是您需要定义指针实例化的位置,这取决于您的需求。也许您可以为您的问题提供更多背景信息: