前段时间我读过不允许定义一个对象的更多实例。但我再也找不到那篇文章了。有人能告诉我如何阻止定义类CLog
中的任何其他对象吗?
class CLog
{
........
} log;
答案 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()方法在创建之前创建类实例,检查实例是否存在,如果存在,则返回现有实例,否则创建新实例。这样,您可以使类创建类的单个实例。 由于构造函数是私有的,因此没有人可以使用构造函数创建对象。