【发布时间】:2019-01-21 09:14:05
【问题描述】:
我有一个数组,它的大小是使用编译时常量设置的(在我的例子中是预处理器#define)。我需要在编译时使用连续数字对其进行初始化。我该怎么做?
简化示例:
#define ARR_SZ 5
struct C {
C(int a) : a(a) {}
int a;
};
C arr[ARR_SZ] = {{0},{1},{2},{3},{4}}; // This needs to adapt to any number
我可以使用 C++11,但不是更新的(尽管我有兴趣学习更新的技术,即使我不能在这个项目中使用它们)
【问题讨论】:
-
可以是
std::array而不是原始数组吗? -
std::make_index_sequence(C++14)(可以用C++11实现)。 -
@StoryTeller 在实际代码中,它是一个
std::array,并且是一个没有默认构造函数并且只有一个接受整数的构造函数的类类型。我试图简化 -
使用没有默认构造函数的类可能会产生很大的不同。始终尝试创建一个minimal reproducible example 向我们展示,不要简化太多。