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
我尝试编写一个简单的问题,显示我想要的问题,而不是粘贴我的整个代码。
答案 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;
}