c++ - 类中的 static const std::array

标签 c++ templates c++11

我有一个包含一些枚举的模板化结构,为了方便起见,我想制作一个包含枚举的 std::array。有没有办法做到以下几点?

template< typename A >
struct someClass{
    enum class State{
        sA,
        sB,
        sC
    }

    static const std::array<State,4> the_states = {{
        State::sA,
        State::sB,
        State::sC
    }};

};

最佳答案

没有。在一个类中只能初始化 static const 整型数据成员。

但是,你可以这样做......

template< typename A >
struct someClass
{
    enum State
    {
        sA,
        sB,
        sC
    };

    static const std::array<const State,4> the_states;
};

template<typename A>
const std::array<const someClass::State,4> someClass<A>::the_states = 
{
    someClass::State::sA, 
    someClass::State::sB, 
    someClass::State::sC 
};

关于c++ - 类中的 static const std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779899/

相关文章:

c++ - 如何将模板内部的模板作为模板模板参数传递给另一个模板?

c++ - 为什么STL中没有常量表达式字符串构造函数?

c++ - 在 C++ 中可靠地比较不同机器的时间戳

c++ - 默认模板模板参数值是否推导上下文?

c++ - 是否可以将重载方法传递给 std::thread

c++ - 可变参数模板中的声明符修饰符位置

c++ - 如何编写 bison 文件以自动使用 C 头文件中定义的 token 枚举列表?

c++ - 如何将 dateTimeFromText 更改为仅允许分钟 %15 或禁用手动文本输入?

c++ - 在现代 C++11/C++14/C++17 和 future 的 C++20 中枚举到字符串

c++ - Null<std::string> 问题