我有很多这样的代码

MyClass v = {1,2,3,4,5,6};

不幸的是,我的项目针对的是愚蠢的ARM编译器,它不支持特殊的C++ 11功能,特别是它不支持“initialyzer_list”。
当前唯一的解决方案如下所示:
MyClass v(6);
v[0]=1;
v[1]=2;
...

上面有很多代码和手动编辑的问题是灾难。
有什么方法可以用更少的血液克服它?
宏,库,妙招,还有可以通过MyClass中的某些编码进行find-replace-regexp的其他事情?

最佳答案

如果您可以更早地将列表声明为数组,则可以将大小作为模板参数获取:

class MyClass {
  public:
    template <std::size_t N>
    MyClass(const int (&in)[N]);
};

int main() {
    static const int arr[] = {1,2,3,4,5,6};
    MyClass mc(arr);
}

10-04 22:00
查看更多