gpt4 book ai didi

c++ - 跨多个文件使用 C++ 类的静态变量

转载 作者:行者123 更新时间:2023-11-30 04:28:41 29 4
gpt4 key购买 nike

我的 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com