我有一類這樣的:現在訪問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
@大衛:我沒有初始化他們的價值。我在帖子上做了編輯。 –