从静态函数C ++访问静态变量

时间:2013-09-27 19:22:25

标签: c++ static

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

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

1 个答案:

答案 0 :(得分:5)

这是链接器错误。您已声明了变量,但尚未对其进行定义,因此链接器无法找到它。

添加:

int A::i = 0;

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