c++ - 使用另一个类的单个实例的类的多个实例

标签 c++ class static-members

我有一个类(A 类),它在运行时存在很多实例。此类使用另一个处理资源分配的类(R 类)。由于第二个类(R 类)正在为 A 类的所有实例进行资源分配,因此必须只有一个拷贝。

所以看起来像这样:

Class P (Parent) 
Class A[64], which are childs of Class P 
Each of these requires access to the single instance of Class R

我想知道最好的解决方案。

  1. 让父类(P 类)实例化类 R 并传递 实例到每个 A 类中。问题:P 类不关心 R 级,没有用处。它必须这样做似乎很愚蠢 管理它。
  2. 全局变量,可能隐藏在命名空间问题:任何人都可以 然后使用它,它应该限制在 A 类。
  3. A 类内部的静态变量,所以 A 类的所有实例都有 访问类 R 的同一实例。问题:静态类 变量是邪恶的

或者我没有想到的东西?

最佳答案

让类 R 包含一个实例到它自己,即。单例模式。

然后你可以这样做:

class A
{
R *resource;
public:
A() { resource = R::getInstance(); }
}

从那时起,使用“资源”作为新的类指针,以防万一您以后改变主意。

然而,更好和更灵活的方法可能是让父级获取实例。例如,在 P 类中:

classA = new A(R::getInstance());

这样您可以在需要时轻松更改资源类(例如,用于单元测试),但类 P 不管理资源对象。

关于c++ - 使用另一个类的单个实例的类的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893502/

相关文章:

c++ - 加权中位数计算

c++ - 多线程环境下数据写入数组

c++ - C++ 中静态指针类成员链接期间的 undefined reference

php - 如何从 PHP 定界符表达式中扩展静态类变量?

javascript - 访问类中的构造函数属性

c++ - 在类内部定义一个const静态对象变量

c++ - 根据编译开关/NDEBUG 在 std::vector 的 at() 和 operator[] 之间交换

c++ - 全局字符串在接收到非空内容后保持为空

c++ - 避免重新定义宏定义的类

c++ - 如何将变量内容常量用作std::array的大小?