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

Accesing staic variable from static function C++

本文关键字:静态 变量 访问 C++ 静态函数      更新时间:2023-10-16
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

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

这是一个链接器错误。你已声明变量,但尚未定义它,因此链接器找不到它。

添加这个:

int A::i = 0;

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