C ++和SDL 2 - 创建一个仅限常量的头:对Constants :: window的未定义引用

时间:2015-11-10 18:33:13

标签: c++ sdl-2

所以我开始了一个带有C ++和SDL 2的空闲时间游戏项目,并遇到了一个令人费解的问题。

我有一个头文件,我打算存储全局使用的数据。

0 0 0 0 0 0...

现在,当我在其他地方引用窗口时,一个"未定义的引用"错误出现了。我尝试在main函数之前添加一个null定义,但它仍然不起作用。

所以问题出现在这里:

class Constants {
public:
    static SDL_Window* window;

    const static int w = 640;
    const static int h = 480;
};

出了什么问题,我该怎么做?我之前使用SDL 1成功编码。

2 个答案:

答案 0 :(得分:1)

至少,你需要在标题中转发声明SDL_Window类。

此外,如果以上是链接器错误,您需要让编译器知道要链接的库以及在哪里找到它。

答案 1 :(得分:0)

我在自己的游戏开发过程中遇到过类似的问题(虽然我使用的是Allegro)

您需要做的是定义相关的变量/类。你只宣布了它。你现在需要定义它。

// constants.h
class Constants {
    public:
    static SDL_Window* window;

    const static int w = 640;
    const static int h = 480;
};

// constants.cpp
#include "constants.h"

Constants::SDL_Window *window;

如果我的语法有点偏差,我很乐意得到纠正。