我正在尝试打开一个SFML窗口,但每次启动它时都会显示“访问冲突读取位置:0xCCCCCCC0”。 init()方法中发生错误。相关代码:
class AirportGame {
private:
sf::RenderWindow window;
public:
void init();
int run();
/
void AirportGame::init() {
window.create(sf::VideoMode(800, 600), "SFML window");
}
int AirportGame::run() {
init();
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
}
return 0;
}
int main() {
AirportGame* app = new AirportGame();
return app->run();
}
它发生在init之后的某个时间,因为实际的窗口是打开的。调试器中没有提到0xCCCCCC0。
答案 0 :(得分:2)
修正了它!
在C ++预处理器下我将定义设置为SFML_STATIC而不是SFML_DYNAMIC
答案 1 :(得分:-1)
将窗口设置为a RenderWindow * window;
并使用
创建它window = new sf::RenderWindow( /*your stuff or default initialize*/ );
然后致电
window->create( /*your settings*/ );
如果你还没有初始化它。
从那时起只使用' - >'进入访问窗口而不是'。'