繁体   English   中英

使用静态成员变量

[英]Using a static member variable

您好,在我的class Bullet ,当bullet不活动时,我将active声明为false,在bullet不活动时则声明为true。 在我没有以任何方式连接到Bullet class其他class ,我想使用bool成员active并对其进行更改,我该怎么做?

我收到错误

Error 18 error LNK2001: unresolved external symbol "public: static bool Bullet::active" (?active@Bullet@@2_NA) C:\\Skolarbete\\Programmering i C++\\ProjectTemplate\\ProjectTemplate\\Alienrow.obj ProjectTemplate

宣言: static bool active;

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

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

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

因此,在.h文件中:

class Bullet
{
public:
    static bool active;
};

并在.cpp文件中,在全球范围内:

bool Bullet::active = false;

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

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

bool Bullet::active = false;

代替

Bullet::active = false;

也就是说,首先必须定义对象,然后才可以分配它。

至于你显示的声明

Bullet::active = false;

那么它不是活动的定义。 这是一个赋值语句。

考虑到该定义应放在某个模块中。 如果将其放置在标题中,则会收到错误消息,表明该对象已定义。

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

bool Bullet::active;

您选择的cpp文件中的定义(一个包含类声明的文件)。
您可以将静态成员视为恰好在类的“名称空间”中的全局​​变量。 这样的类声明不会创建任何对象,甚至不会创建静态成员,它只是一个声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM