我正在尝试向我的类添加一个静态常量变量,它是一个结构的实例。因为它是静态的,所以我必须在类声明中对其进行初始化。尝试这段代码
class Game {
public:
static const struct timespec UPDATE_TIMEOUT = { 10 , 10 };
...
};
出现此错误:
error: a brace-enclosed initializer is not allowed here before '{' token
error: invalid in-class initialization of static data member of non-integral type 'const timespec'
如何初始化它?谢谢!
最佳答案
在源文件内的类外的单独定义中初始化它:
// Header file
class Game {
public:
// Declaration:
static const struct timespec UPDATE_TIMEOUT;
...
};
// Source file
const struct timespec Game::UPDATE_TIMEOUT = { 10 , 10 }; // Definition
如果您将定义包含在一个头文件中,并且该头文件包含在多个源文件中,您可能会收到有关多重定义符号的链接器错误。
关于C++ 初始化静态常量结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079537/