类的多个实例使用另一个类的单个实例
Multiple instances of class using single instance of another class
我有一个类(类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
我想知道最好的解决方案。
- 让父级(类 P)实例化类 R 并传递实例到每个类 A 中。 问题:P类不关心R类,没有用处。它不得不管理它。
- 全局变量,可能隐藏在命名空间中 问题:任何人都可以然后使用它,它应该仅限于 A 类。
- 类 A 中的静态变量,因此类 A 的所有实例都有访问类 R 的同一实例。 问题:静态类变量是邪恶的
还是我没有想到的事情?
让类 R 包含自身的一个实例,即。单例模式。
然后你可以做:
class A
{
R *resource;
public:
A() { resource = R::getInstance(); }
}
从那时起,使用"资源"作为新的类指针,以防万一您以后改变主意的工作方式。
但是,更好、更灵活的是让父级获取实例。例如,在类 P 中:
classA = new A(R::getInstance());
这样,您可以根据需要轻松更改资源类(例如,用于单元测试),但类 P 不管理资源对象。
相关文章:
- 如何将模板的实例传递给另一个模板的另一个实例?
- 如何在另一个类中创建类的实例?
- 如果模板参数是另一个模板的实例化,则键入特征测试
- 重载运算符*以获取对另一个类的实例的引用
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 如何正确实例化静态字段 tat 是另一个类对象
- C++ - 使用另一个类的构造函数实例化一个对象
- 如何使用另一个模板化类的实例模板化类?
- 在另一个类中创建类实例时出现问题
- C++:递归地将字符串中一个字母的所有实例替换为另一个字母
- 另一个类中嵌套模板的外部实例化
- 如何为包含另一个类实例的数组制作常量 getter?
- 如何将模板化类实例作为模板参数传递给另一个模板?
- 如何在 C 中包装C++具有参数的类方法或返回另一个C++类的实例?
- 如何将对象函数的实例传递给另一个函数
- "new operator"将另一个类实例化为工厂?
- 如何在C++中将类的实例完全重新分配给同一类的另一个实例(然后删除原始对象)?
- 如何使用 c++ 从另一个 cpp 文件中的 main.cpp 调用实例化类
- 无法从派生类型的作用域访问另一个实例的受保护成员
- 类实例的C++/向量作为另一个类的属性