我收到此错误,我不知道这意味着什么:
$ mingw32-g++ Test.cpp -o Test.exe
C:\Documents and Settings\BDL\ccksiYhI.o:Test.cpp:(.text+0x11): undefined reference to 'Foo::a'
collect2: ld returned 1 exit status
这是我的代码。
Test.cpp的
#include <vector>
#include "Test.h"
int main() {
Foo::a.clear();
return 0;
}
Test.h
#include <vector>
class Foo {
public:
static std::vector<int> a;
};
这不是我的原始代码,但我已将其归结为此问题。我是c ++的新手,如果有人能解释为什么这是错误的以及我如何解决它,我将不胜感激。
答案 0 :(得分:3)
您仍然需要定义成员变量,即使它是静态的。将Test.cpp更改为:
#include <vector>
#include "Test.h"
std::vector<int> Foo::a; // <-- definition
int
main() {
Foo::a.clear();
return 0;
}
答案 1 :(得分:1)
您需要在一个翻译单元中定义静态成员,例如在Test.cpp
:
std::vector<int> Foo::a;
答案 2 :(得分:1)
必须在课堂外定义静态成员。在里面你有一个声明。
网上有很多网站都有例子。搜索“定义C ++静态成员。”
祝你好运,欢迎来到SO。