![](/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.