如何在C++类中设置静态变量?

19 浏览
0 Comments

如何在C++类中设置静态变量?

我有一个像这样的类:

class example {
public:
    static void setStaticVar() { example::var = 1; };
private:
    static int var;
};

但是它给我报了链接器错误,我不知道为什么。

我想在每个实例中存储一些相同的数据。这就是为什么我想使用一个静态变量而不是一个实例变量(使用实例变量,我将在类的每个实例中存储相同的数据,这是一种内存浪费)。

我应该如何做到这一点?

0
0 Comments

在C++类中设置静态变量的问题是因为静态变量的初始化不能在类定义内部进行。解决方法是在类定义外部进行初始化,并避免在多个包含了头文件的地方进行重复定义。

以下是解决方法的示例代码:

class example { ... };
// 在类定义外部进行初始化以避免链接错误
int example::var = 1;

如果这段代码在多个地方包含了同一个头文件,就会出现多重定义错误。

这是正确的。通常情况下,静态变量应该在.cpp文件中进行初始化。然而,如果使用了头文件保护(header guards),这种情况就不会发生。

0
0 Comments

在C++类中设置静态变量的问题是由于需要对变量进行初始化才能使用。在一个`.cpp`文件中,需要在任何函数外部对变量进行初始化,例如:

int example::var = 0;

感谢回答者的帮助,我之前确实使用过静态变量,只是不知何故忘记了进行初始化。

0
0 Comments

在C++类中设置静态变量的问题是因为需要在类定义外部对静态变量进行初始化。在C++中,静态变量是类的所有实例共享的变量,它们在类的内部声明,但在类的外部定义。

解决方法是在类定义外部使用类名::静态变量名 = 初始值;的语法来初始化静态变量。在源文件中,可以使用以下代码来设置静态变量:

int example::var = 0;

这行代码将静态变量var初始化为0。在这个例子中,example是类名,var是静态变量名。

通过这种方式,我们可以在C++类中设置静态变量,并为其提供初始值。这样,无论创建多少个类的实例,它们都将共享同一个静态变量,而不是每个实例都有自己的变量副本。这在某些情况下非常有用,例如计算对象的数量或跟踪全局状态。

0