0

你好,我class Bullet在不活动时声明活动为假,当活动为bullet真。在我的另一个class未以Bullet 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

4

3 回答 3

1

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

所以在 .h 文件中:

class Bullet
{
public:
    static bool active;
};

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

bool Bullet::active = false;

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

于 2014-03-25T23:36:03.250 回答
0

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

bool Bullet::active;

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

于 2014-03-25T23:35:07.257 回答
0

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

bool Bullet::active = false;

代替

Bullet::active = false;

那就是首先您必须定义对象,然后才能分配它。

至于你展示的声明

Bullet::active = false;

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

考虑到定义应该放在某个模块中。如果你将它放在标题中,你会得到一个对象已经定义的错误。

于 2014-03-25T23:33:17.597 回答