此刻我真的很困惑。自从我触及C ++以来我已经有一段时间了,我想再次回到它,所以我尝试使用SFML,并且我一直在使用指南。得到我的是这段代码。
Game::Game():mWindow(sf::VideoMode(640, 480), "SFML Application") {
}
它完美无缺,我想我明白了。它正在初始化mWindow,当构造mWindow时,它会创建窗口。没问题。但是当我把这段代码放下来时。
Game::Game() {
mWindow(sf::VideoMode(640, 480), "SFML Application");
}
它给了我错误Type 'sf::RenderWindow' does not provide a call operator
我不知道这意味着什么,也不理解这两个代码块是如何不同的。
答案 0 :(得分:2)
mWindow
应该是类数据成员,而不是函数。
答案 1 :(得分:1)
它给你的错误是因为在你的第二个例子中,这个:
mWindow(sf::VideoMode(640, 480), "SFML Application");
应该是这样的:
mWindow = sf::VideoMode(640, 480), "SFML Application";
无论如何都不会起作用,因为sf:RenderWindow
继承自sf::NonCopyable
。
错误实际上非常具有描述性,'sf :: RenderWindow'不提供呼叫运算符。 mWindow
的类型为sf::RenderWindow
。你试图调用它就像一个函数mWindow()
,它不是。{/ p>
您应该在第一个示例中使用初始化列表。这将确保mWindow
成员构建一次。
答案 2 :(得分:0)
这称为Constructor Initialization Lists,在第二个例子中它应该是这样的:
Game::Game() {
this.mWindow = new sf::RenderWindow(sf::VideoMode(640, 480), "SFML Application");
}