![](/img/trans.png)
[英]How to initialize a static member variable using a static member function at runtime?
[英]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.