我觉得自己真的很愚蠢,但我找不到这个(可能很简单)问题的正确搜索词。我认为使用一些代码我的问题很容易理解。
我有一个类,作为成员,具有另一个类的实例。我走了:
class Engine {
sf::Window window_;
}
然后在我的.cpp
文件中:
Engine::Engine() {
window_ = sf::Window(200,100);
}
我实际上并不知道这是做错事的方法,直到我得到“sf :: Window的对象无法分配,因为它的复制运算符被隐式删除”这个特定的类。我理解我应该做sf::Window window(200,100)
,但是如何将它与在我的班级中创建成员变量(window_
)结合起来?
答案 0 :(得分:8)
您需要使用构造函数初始化列表来初始化数据成员:
Engine::Engine() : window_(200,100)
{
}
您尝试做的是将分配给默认的构造实例。这是因为,一旦您进入构造函数体,所有数据成员(和基类)都已经初始化。
答案 1 :(得分:2)
您可以通过成员初始化列表
来完成Window() : window_(sf::VideoMode(640, 480), "title") {}
或致电window_.create(arguments)