考虑类MyClass
有没有默认构造函数。C++:将值分配给全局类变量
我想写,看起来像下面的代码:
MyClass instance;
void init_system() {
instance = MyClass(parameters, of, the, constructor);
}
上面我当然写的代码失败,出现错误MyClass的没有C'tor不带参数。
有没有做任何正确的方式,或者我必须实现一种解决方法,例如使用共享指针?
考虑类MyClass
有没有默认构造函数。C++:将值分配给全局类变量
我想写,看起来像下面的代码:
MyClass instance;
void init_system() {
instance = MyClass(parameters, of, the, constructor);
}
上面我当然写的代码失败,出现错误MyClass的没有C'tor不带参数。
有没有做任何正确的方式,或者我必须实现一种解决方法,例如使用共享指针?
好,无论是你的类的默认对象能够明智地存在,或者不能。
在后一种情况下,你可能会感兴趣的std::optional
(boost::optional
之前,C++ 17)推迟对象的构造。
要考虑的另一个类是std :: unique_ptr。 –
您可以在对象的初始化进入你init_system()
功能:
MyClass& init_system()
{
static MyClass instance(parameters, of, the, constructor);
return instance;
}
你可能想看看了单件模式,也和读到它的广泛讨论;)
而且是的,另一种解决方案可能是使用或shared_ptr<>
。
有2种方式实现这一目标....
MyClass instance(parameters, of, the, constructor);
会初始化MyClass的使用正确的参数。
Singleton模式
MyClass & MyClass::getInstance(){
static MyClass instance(parameters, of, constructor);
return instance;
}
与返回的getInstance在呼叫时的时间。
第二图案改善了当对象被构建在控制。
目前还不清楚(至少对我来说),你正在尝试做的。你想要初始化什么?静态成员变量(AKA类变量)?只需创建一个静态初始化方法?还有别的吗?请澄清。你想要一个单身人士吗?或者一个静态的工厂方法? – hyde