C ++初始化静态const结构变量

时间:2012-08-22 18:50:00

标签: c++ static struct initialization const

我正在尝试向我的类中添加一个静态常量变量,这是一个结构的实例。由于它是静态的,我必须在类声明中初始化它。试试这段代码

class Game {
    public:
        static const struct timespec UPDATE_TIMEOUT = { 10 , 10 };

    ...
};

出现此错误:

  

错误:'{'之前不允许使用括号括起的初始值设定项   令牌

     

错误:非整数类型'const timespec'

的静态数据成员的类内初始化无效

如何初始化它?谢谢!

2 个答案:

答案 0 :(得分:20)

在源文件中的类外部的单独定义中初始化它:

// Header file
class Game {
    public:
        // Declaration:
        static const struct timespec UPDATE_TIMEOUT;
    ...
};

// Source file
const struct timespec Game::UPDATE_TIMEOUT = { 10 , 10 };  // Definition

如果在头文件中包含定义,如果该头文件包含在多个源文件中,则可能会出现有关多重定义符号的链接器错误。

答案 1 :(得分:1)

将变量声明为函数内的静态变量,并使该函数返回对变量的引用。