-1
class A {
public:
    static int i;
    static int  inc();
};

int A::inc() {
    i++;
    return i;
}

int main() {
    A::inc();
}

众所周知,我们可以从静态方法访问静态成员变量。但是这段代码给了我一个错误

"A::i", referenced from:
  A::inc()     in ccn8PKhC.o
ld: symbol(s) not found for architecture x86_64

有人可以告诉我我错过了什么吗

4

1 回答 1

5

这是一个链接器错误。你已经声明了变量,但你还没有定义它,所以链接器找不到它。

添加这个:

int A::i = 0;

.cpp 文件中的某个全局位置(在您的类和任何函数之外)来定义它。如果您的项目中有多个 .cpp 文件,则定义只需在其中一个中即可。

于 2013-09-27T19:24:26.877 回答