我的 A 类是这样的:
class A {
static int i;
A();
f1();
f2();
static void intitiaize();
// snipped rest
}
void initialize() {
A::i = 0;
}
在头文件中。
我有一个用于初始化类的初始化函数
第二个文件中 main 方法中的静态变量。在此之后我创建
A
的对象调用 a.f1()
。
当我尝试在文件三中创建 A
的另一个对象时,编译器会报错
说“没有提到 A 类”。所以在这第三个文件中包含标题。
我收到有关 A
的多个定义的错误。
我应该如何进行?我在类文件周围包含了守卫。
最佳答案
您需要在 header 中A::i
的声明(您可以去掉initialize()
:
//whatever.h:
class A{
static int i;
A();
f1();
f2();
...
}; // don't forget the semicolon on the end.
然后您需要在一个 CPP 文件中定义变量:
// whatever.cpp:
int A::i = 0;
然后在您要使用该类的对象的任何地方包含 header ,只需编译 .CPP 文件并将其与使用该类的其他文件链接。
关于c++ - 跨多个文件使用 C++ 类的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940402/