我熟悉 C++ 构造函数和初始化器:
class Foo {
int x;
public:
Foo(int _x) : x(_x) {}
};
Foo foo1(37);
Foo foo2(104);
我的问题是我必须实现一个类,该类有一个 3x6 数组成员。我将如何做与上述类似的事情?
class Bar {
int coeff[3][6];
public:
// what do I do for a constructor????
};
编辑:对于普通数组,我会执行以下操作,我只是不知道如何为类执行此操作:
static int myCoeffs[3][6] =
{{ 1, 2, 3, 4, 5, 6},
{ 7, 8, 9, 10, 11, 12},
{ 13, 14, 15, 16, 17, 18}};
编辑 2:由于各种原因(例如,这是一个有限制的嵌入式系统)我不需要使用 Boost,所以如果它提供了我不能使用的解决方案。
更新:我没有绑定(bind)到初始化程序。在构造函数体中完成它是可以的,而且它也不必是内联的。我只是在寻找一种正确的方法来构造需要一组系数的类的实例,而不会弄乱指针分配或其他东西。
最佳答案
你不能。在 C++03 中,您不能在构造函数初始化列表中初始化数组。但是,您可以在构造函数主体中执行此操作(从技术上讲,它不再是初始化)。
也就是
struct x
{
int a[4];
x():a({1,2,3,4}) //illegal
{
a[0] = 1;
etc.
}
};
编辑:
问题编辑后,这里有一种方法可以做到这一点
#include <algorithm>
struct x
{
int arr[3][4];
x(int (&arg)[3][4])
{
std::copy(&arg[0][0], &arg[0][0]+3*4, &arr[0][0]);
}
};
关于C++:数组的构造函数/初始化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221961/