我需要通过C ++中的初始化列表在类构造函数中初始化const int
数组。
-std=c++11
或-std=gnu++11
。{1, 2, 3, 4}
。答案 0 :(得分:1)
我可以设想在退出C ++ 11初始化列表领域时这样做的唯一方法是将它隐藏在struct wrapper中并在构造初始化列表中对其进行值初始化:
#include <iostream>
using namespace std;
struct ArrayWrap
{
int content[4];
int& operator [](size_t n) { return content[n]; }
int operator [](size_t n) const { return content[n]; }
};
static const ArrayWrap content = { {1,2,3,4} };
struct MyObj
{
const ArrayWrap arrwrap;
MyObj() : arrwrap(content) {}
};
int main(int argc, char *argv[])
{
MyObj obj;
for (int i=0;i<4;++i)
cout << obj.arrwrap[i] << ' ';
cout << endl;
return EXIT_SUCCESS;
}
<强>输出强>
1 2 3 4
在C中,通过值从函数返回它们时,在结构中埋入固定数组是很常见的,在这种情况下,我只是利用由C ++编译器生成的包装器结构的默认copy-ctor。 p>
可能不是你想要的理想解决方案,但它确实有效,并在C ++ 98下编译。
答案 1 :(得分:0)
好吧,如果您从候选集中禁止使用C ++ 11解决方案,那么you simply cannot do this。