初始化列表中的数组非常大
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_t
为 member_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,不会发生复制或移动。
我需要将大型转换 table 初始化为我 class 中的数据成员:
CFoo::CFoo() :
member_one(123),
member_two(456),
member_large_table({
{"huge", "2D"},
{"array", "of"},
{"data", "..."},
.....
这样做有什么好的做法?将它放在初始化数组中会增加编译时错误检查,但会使构造函数代码膨胀。如何分离这段代码?
设 table_t
为 member_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,不会发生复制或移动。