谁能解释为什么以下代码无法编译?至少在 g++ 4.2.4 上。
更有趣的是,为什么当我将 MEMBER 转换为 int 时它会编译?
#include <vector> class Foo { public: static const int MEMBER = 1; }; int main(){ vector<int> v; v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER' v.push_back( (int) Foo::MEMBER ); // OK return 0; }
您需要在某处实际定义静态成员(在类定义之后)。尝试这个:
class Foo { /* ... */ }; const int Foo::MEMBER; int main() { /* ... */ }
那应该摆脱未定义的引用。