C++ 使用静态成员变量

C++ 使用静态成员变量,c++,class,members,C++,Class,Members,您好,在我的类Bullet中,当Bullet未处于活动状态时,我将活动状态声明为false,当它处于活动状态时,声明为true。在我的另一个类中,它没有以任何方式连接到我的Bullet类,我想使用bool成员活动并对其进行更改,我如何才能做到这一点 我得到了错误 错误18错误LNK2001:未解析的外部符号“public:static bool Bullet::active”(?active@Bullet@@2_NA)C:\Skolarbete\Programmering i C++\Proje

您好,在我的
类Bullet
中,当
Bullet
未处于活动状态时,我将活动状态声明为false,当它处于活动状态时,声明为true。在我的另一个
中,它没有以任何方式连接到我的
Bullet类
,我想使用
bool
成员
活动
并对其进行更改,我如何才能做到这一点

我得到了错误

错误18错误LNK2001:未解析的外部符号“public:static bool Bullet::active”(?active@Bullet@@2_NA)C:\Skolarbete\Programmering i C++\ProjectTemplate\ProjectTemplate\Alienrow.obj ProjectTemplate

声明:
静态布尔激活

当我使用它时:
Bullet::active=false


我也是新来的
C++
,所以不要讨厌!感谢所有我能得到的帮助:D

您忘记指定变量的类型(即定义对象)。写

而不是

Bullet::active = false;
也就是说,首先必须定义对象,然后才能指定它

至于你的陈述

Bullet::active = false;
那么,它不是活动的定义。这是一个赋值语句


考虑到定义应该放在某个模块中。如果将其放在标题中,可能会出现一个错误,即对象已定义。

静态类成员需要在某个地方定义,在您的情况下,必须有一个

bool Bullet::active;
您选择的cpp文件(包含类声明的文件)中的定义。

您可以将静态成员视为恰好位于类的“名称空间”中的全局变量。类声明本身不创建任何对象,甚至不创建静态成员,它只是一个声明。

类内的静态变量实际上是一个外部声明。您仍然需要变量定义。这类似于C外部变量

因此在.h文件中:

class Bullet
{
public:
    static bool active;
};
在.cpp文件中,在全局范围内:

bool Bullet::active = false;

由于错误消息实际上来自链接器,而不是编译器,因此推断出缺少变量定义(而不是声明)。

您在使用库吗?如果这是您的意思,我将bullet.h文件包含在我要使用的active文件中?然后它会说“bool bullet::active”:重新定义“@Prolle您必须从hader中排除此定义,并将其放置在某个模块中。
bool Bullet::active = false;