我有这段代码:( 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)
这是什么意思?
答案 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.