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

Using static variables of a C++ class across multiple Files

本文关键字:静态 变量 C++ 文件      更新时间:2023-10-16

我有A类,这样:

class A {
    static int i;
    A();
    f1();
    f2();
    static void intitiaize();
    // snipped rest
}
void initialize() {
  A::i = 0;
}

在头文件中。

我有一个初始化第二个文件中 Main 方法中的静态变量。 在此之后,我创建调用a.f1()A对象。

当我尝试在文件三中创建另一个A对象时,编译器抱怨说"不提A类"。因此,在第三个文件中包含了标题。

我收到有关A的多个定义的错误。

我应该怎么做?我在类文件周围包括了警卫。

你想要在标题中声明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;

然后在要使用类对象的任何位置包含标头,并编译 .CPP 文件并将其与使用此类的其他文件链接。

使用常量整数,您实际上可以在标头中初始化它。这包括布尔值和字符类型。Jerry的方法适用于任何类型,如果它不是常量。

  class A{
      static const int i = 0;
      ...
  }