我有一类这样的:现在访问C++从另一个类的静态成员
class Parameter {
public:
Parameter();
virtual ~Parameter();
bool parse();
static int WindowWidth;
static int WindowHeight;
....
};
,在我主我一起去:
int main(int argc, char *argv[]) {
Parameter parameter;
Controller controller;
parameter.parse("parameter.ini");
controller.initialise();
return 0;
}
现在,在控制器的对象我d需要访问Parameter类的静态成员。因此,我只是在做:
Controller::Controller() {
m_numberOfSweepers = Parameter::NumberOfSweepers;
m_ticks = Parameter::NumberOfTicks;
m_window_cx = Parameter::WindowWidth;
m_window_cy = Parameter::WindowHeight;
}
一切都编译好。拿出GDB,我可以看到在参数对象的解析器方法中,正确的值在静态成员内部。但在Controller :: Controller()方法中,我只是得到垃圾。
我在做什么错?
在此先感谢。
编辑: 在参数类的cpp文件,我做以下(任何方法之外):
int Parameter::WindowWidth;
int Parameter::WindowHeight;
你初始化静态成员?用什么值? – 0x499602D2
如何确保'Parameter :: WindowWidth'在Controller之前初始化? – billz
@大卫:我没有初始化他们的价值。我在帖子上做了编辑。 –