C++ 使用C++;跨多个文件初始化
我的A级成绩如下:C++ 使用C++;跨多个文件初始化,c++,class,C++,Class,我的A级成绩如下: class A { static int i; A(); f1(); f2(); static void intitiaize(); // snipped rest } void initialize() { A::i = 0; } 在头文件中 我有一个初始化类的初始化函数 第二个文件中main方法中的静态变量。在此之后,我创建 A的对象,用于调用A.f1() 当我试图在文件3中创建另一个A对象时,编译器会抱怨 说“不涉
class A {
static int i;
A();
f1();
f2();
static void intitiaize();
// snipped rest
}
void initialize() {
A::i = 0;
}
在头文件中
我有一个初始化类的初始化函数
第二个文件中main方法中的静态变量。在此之后,我创建
A
的对象,用于调用A.f1()
当我试图在文件3中创建另一个A
对象时,编译器会抱怨
说“不涉及A类”。因此,在第三个文件中包含了标题
我得到一个关于A
的多个定义的错误
我应该如何进行?我在类文件周围包含了防护装置。您希望在头文件中声明a::I
(并且您可以去掉初始化()
:
然后,您需要在一个CPP文件中定义变量:
// whatever.cpp:
int A::i = 0;
然后,在要使用类对象的任何位置都包含头文件,只需编译.CPP文件并将其与使用该类的其他文件链接。使用常量整数,您可以在头文件中实际初始化它。这包括bool和char类型。Jerry的方法适用于任何类型,如果不是常量
class A{
static const int i = 0;
...
}
我在类的末尾添加了initated int A::I=0..只是错过了这里谢谢..在我的代码中发现了另一个错误..我做的愚蠢的事情是在头文件中给出函数defn..这再次导致了问题,因为相同的defn被包含在两个c文件中..你是正确的,相应地修改了它。这给了关于这个问题的详细情况。
class A{
static const int i = 0;
...
}