簡體   English   中英

使用靜態成員變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM