簡體   English   中英

如何:繼承的類中的靜態變量

[英]How to : Static variable in inherited class

class B {
 public:
   static int a;
};
class C:B {
};

我想在所有繼承的類中使用變量,但是在聲明a時出現問題。

B::B() {
  a=1;
};

我做對嗎?
感謝您的閱讀並等待您的評論。

//我想念分號,這不是我在說的錯誤。 //當我嘗試delcare類GameState {public:static int a = 1; // ...};

Error   7   error C2864: 'CGameState::a' : only static const integral data members can be initialized within a class    d:\my dropbox\work\#today\gdimario\gdimario\gamestate.h 18

我嘗試寫一個簡單的問題來顯示我想要的問題,而不是粘貼整個代碼。

您可以像在派生類和基類中一樣直接使用它。

也許您的錯誤是在類聲明的末尾沒有分號?

class B {
 public:
   static int a;
};

class C:B {
};

如果要從C的實例調用它,則需要使用公共繼承:(如果未指定任何內容,則假定私有繼承)

class C : public B {
};

要初始化a,您需要執行此操作(通常在相應的.CPP文件的頂部):

int B::a = 3;

您需要編寫一個CPP文件:

int B::a;

並添加Brad建議的分號。 (您甚至編譯過代碼嗎?編譯器說了什么?)

我認為您會收到鏈接器錯誤。 因為您尚未在.cpp文件中定義靜態變量。

e.g.

//hearer file
class X{

 public : static int a ;

}
//impl file

int X::a(0);

....要么...

對於整數類型,還可以在聲明靜態變量時定義它們,例如:

X級{

 public : static int a  = 0;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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