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;