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

Kol*_*nya 9 c++ static struct initialization const

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

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

    ...
};
Run Code Online (Sandbox Code Playgroud)

得到此错误:

错误:在'{'标记之前,不允许使用括号括起的初始值设定项

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

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

Ada*_*eld 20

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

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

// Source file
const struct timespec Game::UPDATE_TIMEOUT = { 10 , 10 };  // Definition
Run Code Online (Sandbox Code Playgroud)

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

  • 编译时将所有.cpp文件放入列表中.不要放头.恩.g ++ main.cpp myclass.cpp -o main (2认同)