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
答案 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;命名空间中。班上的。这样的类声明不会创建任何对象,甚至不是静态成员,它只是一个声明。