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

标签 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()

当我尝试在文件三中创建 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/

相关文章:

c++ - 什么 STL 算法可以确定容器中的一项是否满足谓词?

c++ - 什么是复制省略和返回值优化?

java - 无法在我的 Activity 中调用类

objective-c - 任何人都可以举例说明在 Objective-C 中针对普通类而不是类别或协议(protocol)的前向声明吗?

c++ - 如何在 C++ 中将类(不是对象)作为参数传递

php - 使类中的每个函数都可以访问全局变量

c++ - 如何中断无限的 sigtimedwait?

c++ - 知道谁指向它的对象

c# - 创建一个类来与 SQL 数据库交互