10

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

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

    ...
};

收到此错误:

错误:在“{”标记之前不允许使用大括号括起来的初始化程序

错误:非整数类型“const timespec”的静态数据成员的类内初始化无效

我该如何初始化它?谢谢!

4

2 回答 2

23

在源文件内的类外部的单独定义中对其进行初始化:

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

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

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

于 2012-08-22T18:51:34.383 回答
0

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

于 2016-09-02T11:56:52.293 回答