在C ++中初始化成员实例

时间:2014-02-03 10:58:25

标签: c++

我觉得自己真的很愚蠢,但我找不到这个(可能很简单)问题的正确搜索词。我认为使用一些代码我的问题很容易理解。

我有一个类,作为成员,具有另一个类的实例。我走了:

class Engine {
    sf::Window window_;
}

然后在我的.cpp文件中:

Engine::Engine() {
    window_ = sf::Window(200,100);
}

我实际上并不知道这是做错事的方法,直到我得到“sf :: Window的对象无法分配,因为它的复制运算符被隐式删除”这个特定的类。我理解我应该做sf::Window window(200,100),但是如何将它与在我的班级中创建成员变量(window_)结合起来?

2 个答案:

答案 0 :(得分:8)

您需要使用构造函数初始化列表来初始化数据成员:

Engine::Engine() : window_(200,100)
{
}

您尝试做的是分配给默认的构造实例。这是因为,一旦您进入构造函数体,所有数据成员(和基类)都已经初始化。

答案 1 :(得分:2)

您可以通过成员初始化列表

来完成
Window() : window_(sf::VideoMode(640, 480), "title") {}

或致电window_.create(arguments)