通过静态成员函数初始化C++中的非常量静态成员变量

问题描述:

我正在尝试以下操作,并在两个日志语句之间获得模拟器崩溃。有什么不对?通过静态成员函数初始化C++中的非常量静态成员变量

protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 

我可以得到日志重现参数,但它输出的静态成员之前崩溃(所以上面,同时它指的是不会工作的第一个日志)。

谢谢。

+0

哪个模拟器?平台?环境? – 2011-12-16 21:35:17

+0

您是否在某处定义了静态成员? (注意定义和声明之间的区别)。 – Griwes 2011-12-16 21:36:13

您应该定义静态成员。

class Something 
{ 
protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 
}; // class declaration ends here... 

int Something::maxSize = 0;