相关疑难解决方法(0)

constexpr静态数据成员给出未定义的引用错误

我正在研究一个内核,我想创建我的静态数据成员,constexpr所以我可以将其值设置为enum class.但是,如果我这样做,我会得到一个未定义的引用错误.如果我把它变成非constexpr并在类之外初始化它,它似乎才有效.

工作:

// terminal.hpp
class Terminal
{
    static uint32_t col_map[16];
};

// terminal.cpp
uint32_t Terminal::col_map[16] = {
    0x000000, 0x0000AA, 0x00AA00, 0x00AAAA,
    0xAA0000, 0xAA00AA, 0xAA5500, 0xAAAAAA,
    0x555555, 0x5555FF, 0x55FF55, 0x55FFFF,
    0xFF5555, 0xFF55FF, 0xFFFF55, 0xFFFFFF
};
Run Code Online (Sandbox Code Playgroud)

不工作:

// terminal.hpp
class Terminal
{
    constexpr static uint32_t col_map[16] = {
        0x000000, 0x0000AA, 0x00AA00, 0x00AAAA,
        0xAA0000, 0xAA00AA, 0xAA5500, 0xAAAAAA,
        0x555555, 0x5555FF, 0x55FF55, 0x55FFFF,
        0xFF5555, 0xFF55FF, 0xFFFF55, 0xFFFFFF
    };

    enum class Color : uint32_t
    {
        Black = col_map[0],
        White = col_map[15] …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

3
推荐指数
1
解决办法
398
查看次数

标签 统计

c++ ×1

c++11 ×1