【发布时间】:2015-09-17 06:46:47
【问题描述】:
我正在尝试向我的班级添加延迟初始化函数。我对C++不是很精通。谁能告诉我我是如何实现的。
我的班级有一个私有成员定义为:
std::unique_ptr<Animal> animal;
这是带有一个参数的原始构造函数:
MyClass::MyClass(string file) :
animal(new Animal(file))
{}
我刚刚添加了一个无参数构造函数和一个 Init() 函数。这是我刚刚添加的 Init 函数:
void MyClass::Init(string file)
{
this->animal = ???;
}
我需要在那里写什么才能使它等同于构造函数正在做的事情?
【问题讨论】:
-
在成员初始化列表中使用
std::make_unique<Animal>(file)。 -
对于
???,您可以使用std::make_unique<Animal>(file)。 -
@dotNet C++ 是一种复杂的语言,它有很多层,有好有坏。如果你不是很精通 C++,你可以看看isocpp.org/tour。它是现代 C++ 的 C++ 介绍。如果您想跳过介绍,请获取 Effective C++ 系列的副本。
标签: c++ class constructor initialization