C++在更多对象实例之间共享一个变量

P.N*_*.N. 0 c++ struct object object-lifetime

有什么办法可以在另一个类的更多实例上共享一个变量(类的对象)?静态成员不是我想要的.我知道一个变量(大对象)将在更多实例之间共享(但不是所有实例).我怎么能用C++做到这一点?谢谢你的帮助.

例:

class ClassA {
public:
   ...
private:
   ClassB object; // this variable will be shared among more instances of ClassA
}
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 5

好吧,你需要将成员移出类,并存储指针.您还需要计算引用该独立对象的实例.这是很多工作,但幸运的是C++标准库让你满意std::shared_ptr:

class ClassA {
public:
   // ...
private:
   std::shared_ptr<ClassB> object; // this variable will be shared among more instances of ClassA
};
Run Code Online (Sandbox Code Playgroud)

  • “object”变量不是共享的——它所指向的东西可能是共享的。“object”变量是如何初始化或赋值的?我认为这是对OP问题的一个非常糟糕的答案。请参阅我上面关于共享指针在这里是否合适的评论。 (2认同)