【发布时间】:2014-02-19 03:40:49
【问题描述】:
我一直想知道如何将参数传递给单例构造函数。我已经知道如何做单例了,但是我很不幸地找到了一种方法。
这是我的代码(部分)。
Questionnary* Questionnary::getInstance(){
static Questionnary *questionnary = NULL;
if(questionnary == NULL){
cout << "Object created";
questionnary = new Questionnary();
}
else if(questionnary != NULL){
cout << "Object exist";
}
return questionnary;
}
Questionnary::Questionnary(){
cout << "I am an object";
}
//This is want i want to acheive
Questionnary::Questionnary(string name){
cout << "My name is << name;
}
在此先感谢
(顺便说一句,我知道如何以及为什么单身不好)
【问题讨论】:
-
既然你已经有了一个单例,创建几个全局变量并没有什么坏处,每个构造函数参数一个,然后在第一次调用
getInstance()之前为所有这些变量赋值。并且不需要new单例实例,只要在getInstance()内部做一个静态变量,C++11甚至保证它的初始化是线程安全的。
标签: c++ singleton argument-passing