SFML无法创建静态sf :: SoundBuffer *类变量?

时间:2013-03-07 05:16:54

标签: visual-c++ linker sfml

我正在使用SFML的音频库。

在我的班级中,我尝试使用一个私有静态变量来保存SoundBuffer *:

static sf::SoundBuffer* breakBlockBuffer;

当我尝试构建时,这会产生链接器错误:

  

Chunk.obj:错误LNK2001:未解析的外部符号“private:static class sf :: SoundBuffer * Chunk :: breakBlockBuffer”(?breakBlockBuffer @ Chunk @@ 0PAVSoundBuffer @sf @@ A)   myprogram.exe:致命错误LNK1120:1个未解析的外部

但是,如果我将其声明为实例变量,则可以:

sf::SoundBuffer* breakBlockBuffer;

无论是动态链接还是静态链接库,都会发生这种情况。它也在SFML1.6和SFML2.0中都存在。

我觉得我可能犯了一些愚蠢的错误,因为我在C ++上很生气,但代码看起来应该对我好。

1 个答案:

答案 0 :(得分:2)

如果在类中声明静态变量,则还必须在源文件中定义它:

foo.hpp

class foo
{
   static int bar;
};

foo.cpp

int foo::bar;

看起来你没有这样做。