C ++静态类成员 - 语法错误

时间:2011-10-20 18:49:35

标签: c++ class static syntax-error

我有这段代码:( BITMAPS是一个免费名称)

class BITMAPS{
public:
    static ALLEGRO_BITMAP *cursor;

    static void load_bitmaps();
    static void unload_bitmaps();
};

我试图像这样使用它:( 有错误的行

line 9:   BITMAPS.load_bitmaps();
line 23:  BITMAPS.unload_bitmaps();
line 36:  BITMAPS.cursor;

但是我遇到这样的错误:(错误

line 9 and 23:    syntax error : missing ';' before '.'
line 36:          token '.' is illegal after UDT 'BITMAPS'
line 36:          'BITMAPS' : illegal use of this type as an expression
line 36:          left of '.cursor' must have class/struct/union

问题是什么?

编辑:

我已将更改为 :: ,现在我得到了这个:

unresolved external symbol "public: static struct ALLEGRO_BITMAP * BITMAPS::cursor" (?cursor@BITMAPS@@2PAUALLEGRO_BITMAP@@A)
这是什么意思?

1 个答案:

答案 0 :(得分:11)

您需要使用范围解析 ::运算符来引用它们,而不是您正在使用的语法。

BITMAPS::load_bitmaps();
BITMAPS::unload_bitmaps();
BITMAPS::cursor;

编辑:回答您更新的问题

您只是声明了静态成员cursor,您还需要在源(cpp)文件中定义它。
喜欢:

ALLEGRO_BITMAP* BITMAPS::cursor = 0;

好读:
what does it mean to have an undefined reference to a static-member?

<强>建议:
您应该阅读 good C++ book.