C++:数组的构造函数/初始化器?

标签 c++ arrays constructor

我熟悉 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/

相关文章:

c++ - 在自定义库中使用正则表达式时出错

c++ - 常量正确性与非变异集合的混淆

javascript - 无法更改数组中的值

c++ - 在内存中为多个文件保存构造的静态数组c++

Java 初学者 : initializing class variables

c++ - 继承中调用构造函数/析构函数的顺序

c++ - .get() 重复计算文件末尾的字符

c++ - 如何返回方法体中声明的 vector 的引用?

php - 如何使用 JSON 以外的方法将数组转换为字符串?

c++ - 如果构造函数中有错误,则停止进程