我将全局指定为指向我窗口的指针,如下所示:
globals.cpp & globals.h
有:
#include <SFML/Graphics.hpp>
sf::RenderWindow* window
然后在main.cpp
我把:
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <map>
#include <string>
using namespace std;
#include "globals.h"
window(VideoMode( (800,600) , "Test") ); //line 22
但这似乎不正确。因为我收到这个错误:
main.cpp(22): error C2228: left of '.VideoMode' must have class/struct/union
这里有什么问题?
答案 0 :(得分:6)
也许我完全误解了这个问题,但为什么你在中定义了指针标题和源文件?在我看来,你应该做到以下几点:
在 globals.h
中extern sf::RenderWindow *window;
在 globals.cpp
中sf::RenderWindow *window;
在 main.cpp
中window = new sf::RenderWindow( sf::VideoMode(800,600), "Test" );
一旦你完成它,不要忘记delete
窗口。
另外,我强烈建议您用
替换全局指针std::unique_ptr<sf::RenderWindow> window;
并将其初始化为
window( new sf::RenderWindow( sf::VideoMode(800,600), "Test" ) );
现在您无需担心delete
它!
答案 1 :(得分:3)
看例如this tutorial似乎VideoMode
构造函数有三个参数:两个用于分辨率,一个用于位图深度(但深度具有默认值)。
您应该创建如下窗口:
window = new sf::RenderWindow(sf::VideoMode(800, 600), "Test");