【问题标题】:Initialize non-const static member variables in C++, through a static member function通过静态成员函数在 C++ 中初始化非常量静态成员变量
【发布时间】:2011-12-16 21:32:42
【问题描述】:

我正在尝试以下操作并在两个日志语句之间出现模拟器崩溃。有什么问题吗?

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

我可以让日志重现参数,但它在输出静态成员之前崩溃(因此上面显示的第一个日志在引用该参数时不起作用)。

谢谢。

【问题讨论】:

  • 哪个模拟器?平台?环境?
  • 您是否在某处定义了该静态成员? (注意定义和声明之间的区别)。
  • Griwes,您可以在所示示例中看到我对静态成员的所有引用(后来的引用存在但没有机会执行)。 @D.Shawley,这是 Eclipse for Arm for Bada,在 Windows 上运行。

标签: c++ initialization int static-members


【解决方案1】:

你应该定义静态成员。

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;

【讨论】:

  • 这个总是把我绊倒,谢谢。现在工作正常,对于唯一的static const 可能是初始化错误!
猜你喜欢
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2023-04-02
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多