我正在尝试向我的类中添加一个静态常量变量,这是一个结构的实例。由于它是静态的,我必须在类声明中初始化它。试试这段代码
class Game {
public:
static const struct timespec UPDATE_TIMEOUT = { 10 , 10 };
...
};
出现此错误:
错误:'{'之前不允许使用括号括起的初始值设定项 令牌
错误:非整数类型'const timespec'
的静态数据成员的类内初始化无效
如何初始化它?谢谢!
答案 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)
将变量声明为函数内的静态变量,并使该函数返回对变量的引用。