如何:继承类中的静态变量

时间:2010-05-17 15:13:59

标签: c++

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

我想通过任何继承的类使用变量,但是当我声明一个。

时它有问题
B::B() {
  a=1;
};

我做得对吗? 感谢您阅读并等待您的意见。

//我想念分号,这不是我说的错误。 //当我尝试delcare时这是一个错误 class GameState {   上市:     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

我尝试编写一个简单的问题,显示我想要的问题,而不是粘贴我的整个代码。

3 个答案:

答案 0 :(得分:5)

您可以像使用派生类和基类一样直接使用它。

也许你的错误是你的类声明结束时没有分号?

class B {
 public:
   static int a;
};

class C:B {
};

如果你想从C的实例调用它,那么你需要使用公共继承:(如果没有指定私有继承)

class C : public B {
};

要初始化您需要执行此操作(通常位于相应的.CPP文件的顶部):

int B::a = 3;

答案 1 :(得分:3)

您需要写一份CPP文件:

int B::a;

并添加Brad建议的分号。 (你有没有编译你的代码?编译器说了什么?)

答案 2 :(得分:0)

我认为你会收到链接器错误。 因为你还没有在.cpp文件中定义静态变量。

e.g.

//hearer file
class X{

 public : static int a ;

}
//impl file

int X::a(0);

...或...

对于整数类型,您还可以在声明为:

时定义静态变量

类X {

 public : static int a  = 0;

}