通过静态成员函数初始化C++中的非常量静态成员变量
问题描述:
我正在尝试以下操作,并在两个日志语句之间获得模拟器崩溃。有什么不对?通过静态成员函数初始化C++中的非常量静态成员变量
protected:
static int maxSize;
public:
static void setFontSizeRange(int max) {
Log("here %d->%d", max, maxSize);
maxSize = max;
Log("ok");
}
我可以得到日志重现参数,但它输出的静态成员之前崩溃(所以上面,同时它指的是不会工作的第一个日志)。
谢谢。
答
您应该定义静态成员。
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;
哪个模拟器?平台?环境? – 2011-12-16 21:35:17
您是否在某处定义了静态成员? (注意定义和声明之间的区别)。 – Griwes 2011-12-16 21:36:13