使用另一个类的单个实例的多个类实例

时间:2014-04-06 11:39:09

标签: 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. 让父(Class P)实例化类R并传递 实例进入每个A类。问题:P类并不关心 R级并没有用。它似乎很糟糕 管理它。
  2. 全局变量,可能隐藏在命名空间中问题:任何人都可以 然后使用它,它应该限制在A类。
  3. A类中的静态变量,因此所有A类实例都有 访问类R的相同实例。问题:静态类 变量是邪恶的
  4. 还是我没想过的东西?

1 个答案:

答案 0 :(得分:2)

让类R包含一个实例,即。单身模式。

然后你可以这样做:

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

从那时起将'resource'用作新的类指针,以防万一你改变主意后来的工作方式。

然而,更好和更灵活的是父母抓住实例。例如,在P类:

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

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