我有一个类(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 不管理资源对象。
关于c++ - 使用另一个类的单个实例的类的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893502/