使用静态成员变量

时间:2014-03-25 23:26:30

标签: c++ class members

Hello class Bullet我在bullet未激活时声明为false,而在class未激活时为true。在我的其他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 并更改它,我该怎么做?< / p>

我得到了错误

static bool active;

声明:Bullet::active = false;

当我使用它时:C++

我也很新{{1}}所以不要讨厌!感谢我能得到的所有帮助:D

3 个答案:

答案 0 :(得分:1)

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

所以在.h文件中:

class Bullet
{
public:
    static bool active;
};

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

bool Bullet::active = false;

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

答案 1 :(得分:0)

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

bool Bullet::active = false;

而不是

Bullet::active = false;

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

至于你所展示的陈述

Bullet::active = false;

那么它不是活跃的定义。这是一份转让声明。

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

答案 2 :(得分:0)

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

bool Bullet::active;

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

相关问题