我正在使用static
变量。在引用静态类成员上的未解析外部符号后,我用Abc::ct
修改了程序
#include <iostream>
class Abc
{
private:
static unsigned int ct;
public:
void f1()
{
for (int i = 0; i < 5; ++i)
f2();
}
void f2() {
Abc::ct = 0;
if (Abc::ct == 0)
std::cout << "Zero iterationn";
std::cout << Abc::ct << "t";
++Abc::ct;
}
};
int main()
{
Abc obj;
obj.f1();
}
但在 MSVC 中error LNK2001: unresolved external symbol "private: static unsigned int Abc::ct"
错误或在 g++ 中undefined reference to Abc::ct
错误。如何在类Abc
中定义静态变量?
您声明了static
变量,但没有定义和初始化它。在 main()
上方,但在类之外,添加以下行:
unsigned int Abc::ct = 0;
或者,如果您使用的是 C++17
,则可以更改:
static unsigned int ct;
自:
static inline unsigned int ct = 0;
你必须定义它:
unsigned int Abc::ct = 0;
演示