禁止定义多个类的实例

时间:2015-02-03 08:51:50

标签: c++ class c++11

前段时间我读过不允许定义一个对象的更多实例。但我再也找不到那篇文章了。有人能告诉我如何阻止定义类CLog中的任何其他对象吗?

class CLog
{
........


} log;

2 个答案:

答案 0 :(得分:0)

单身人士的另一种解决方案是使用Service Locator模式。

http://gameprogrammingpatterns.com/service-locator.html中描述了对它的详细描述以及如何使用它。

再次像单身人士一样,这种模式应该谨慎使用,但是日志记录系统可以成为一个很好的用例,如果没有别的,它会教你一些新的设计模式。

答案 1 :(得分:-1)

将您的构造函数设为私有。 定义一个返回类实例的公共方法。

class sample{
 private:
    sample(){};
    static *sample instance;
public:
static *sample getInstance(){
   if (instance != null)
      instance = new sample();
   return instance;
}

getInstance()方法在创建之前创建类实例,检查实例是否存在,如果存在,则返回现有实例,否则创建新实例。这样,您可以使类创建类的单个实例。 由于构造函数是私有的,因此没有人可以使用构造函数创建对象。