初始化列表中的数组非常大

Very large array in initializer list

我需要将大型转换 table 初始化为我 class 中的数据成员:

CFoo::CFoo() :
    member_one(123),
    member_two(456),
    member_large_table({
       {"huge", "2D"},
       {"array", "of"},
       {"data", "..."},
       .....

这样做有什么好的做法?将它放在初始化数组中会增加编译时错误检查,但会使构造函数代码膨胀。如何分离这段代码?

table_tmember_large_table 的类型。然后您可以执行以下操作:

class CFoo {
    static auto make_member_large_table() -> table_t {
        return table_t{{"huge", "2D"},{"array", "of"},{"data", "..."},...};
    }
public: 
    CFoo::CFoo() :
        member_one(123),
        member_two(456),
        member_large_table(make_member_large_table())
    {}
};

由于 return 值优化,这将直接在成员变量中创建 table,不会发生复制或移动。