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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++在更多对象实例之间共享一个变量相关的知识,希望对你有一定的参考价值。

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

例:

class ClassA {
public:
   ...
private:
   ClassB object; // this variable will be shared among more instances of ClassA
}
答案

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

class ClassA {
public:
   // ...
private:
   std::shared_ptr<ClassB> object; // this variable will be shared among more instances of ClassA
};
另一答案

你可以使用指针。

class B { ... }

class A {
    ...
    B *b;
    ...
}

main() {
    A a1, a2;
    B *b1 = new B();

    a1.b = b1;
    a2.b = b1;
}

这样,ba1上的a2成员引用同一个对象。

另一答案

我认为std :: shared_ptr可能就是你想要的。在这种情况下,您的代码将是这样的:

class ClassA {

public:
   ...
private:
   std::shared_ptr<ClassB> object; // this variable will be shared among more  instances of ClassA
}

但是您需要定义指针实例化的位置,这取决于您的需求。也许您可以为您的问题提供更多上下文,例如:

  • ObjectB来自哪里,它是否由另一个实体拥有?
  • 它是如何分配给ObjectS的实例的?

以上是关于C ++在更多对象实例之间共享一个变量的主要内容,如果未能解决你的问题,请参考以下文章

django 频道在组用户之间共享实例变量

JNI/NDK开发指南——C/C++访问Java实例变量和静态变量

C# 在应用程序之间共享实例

JNI/NDK开发指南——C/C++访问Java实例变量和静态变量

在C中的DLL中的许多函数之间共享变量

在 C# 中的类之间共享对象