我有一个全局指定作为指向我的窗口的指针,如下所示:
globals.cpp & globals.h 具有:
#include <SFML/Graphics.hpp>
sf::RenderWindow* window
Run Code Online (Sandbox Code Playgroud)
然后在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
Run Code Online (Sandbox Code Playgroud)
这怎么看似不正确.因为我得到这个错误:
main.cpp(22): error C2228: left of '.VideoMode' must have class/struct/union
这里有什么问题?
也许我完全误解了这个问题,但为什么你在头文件和源文件中都定义了指针?在我看来你应该做以下事情:
在globals.h中
extern sf::RenderWindow *window;
Run Code Online (Sandbox Code Playgroud)
在globals.cpp中
sf::RenderWindow *window;
Run Code Online (Sandbox Code Playgroud)
在main.cpp中
window = new sf::RenderWindow( sf::VideoMode(800,600), "Test" );
Run Code Online (Sandbox Code Playgroud)
delete一旦你完成它,不要忘记窗口.
另外,我强烈建议你用全局指针替换
std::unique_ptr<sf::RenderWindow> window;
Run Code Online (Sandbox Code Playgroud)
并将其初始化为
window( new sf::RenderWindow( sf::VideoMode(800,600), "Test" ) );
Run Code Online (Sandbox Code Playgroud)
现在你不用担心了delete!
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |