C++:为全局类变量赋值
C++: Assign value to global class variable
考虑没有默认构造函数的类MyClass
。
我想编写如下所示的代码:
MyClass instance;
void init_system() {
instance = MyClass(parameters, of, the, constructor);
}
我上面写的代码当然失败了,错误MyClass没有不接受参数的C'tor。
是否有任何正确的方法可以做到这一点,或者我必须实施一种解决方法,例如使用共享指针?
好吧,要么类的默认对象可以合理地存在,要么不能。
在后一种情况下,您可能对std::optional
(C++17 之前的boost::optional
(感兴趣,以推迟对象的构造。
您可以将
对象的初始化移动到init_system()
函数中:
MyClass& init_system()
{
static MyClass instance(parameters, of, the, constructor);
return instance;
}
您可能还想查找单例模式,并阅读有关它的广泛讨论;)
是的,另一种解决方案可能是使用 unique_ptr<>
或shared_ptr<>
.
有两种方法可以实现这一点。
MyClass instance(parameters, of, the, constructor);
将使用正确的参数初始化 MyClass。
单例模式
MyClass & MyClass::getInstance(){
static MyClass instance( parameters, of, constructor );
return instance;
}
在调用时返回 getInstance。
第二种模式改进了对对象构造时间的控制。
相关文章:
- 为"adjacent"变量赋值时出现问题
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- 为什么我不能为变量赋值函数?
- 可视化的c++变量赋值使代码正常工作
- 如何为结构类型变量赋值
- 派生自 std::exception 的类的赋值运算符
- 在结构的构造函数中使用类方法赋值变量
- 使用 boost python 从 c++ 为 python 中的类成员变量赋值
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- C++:为全局类变量赋值
- 从类外部为类中的变量赋值
- C++ 包含唯一指针成员变量的类的赋值运算符
- 为类中的私有静态变量赋值
- 使用类为变量赋值 (C++)
- 在C++中为类变量赋值后声明类变量
- 为类变量赋值
- visual如何在托管C++类中为静态变量赋值
- 为具有引用成员变量的类创建赋值操作符