C:数组的构造函数/初始化程序?

前端之家收集整理的这篇文章主要介绍了C:数组的构造函数/初始化程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我熟悉C构造函数&初始化:
class Foo {
   int x;
public:
   Foo(int _x) : x(_x) {}
};

Foo foo1(37);
Foo foo2(104);

我的问题是我必须实现一个具有3×6数组成员的类.我怎么做类似上面的事情?

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,所以如果它提供了解决方案,我就无法使用它.

更新:我没有绑定初始化程序.在构造函数体中执行它是可以的,它也不必是内联的.我只是在寻找一种正确的方法来构造一个需要系数数组的类的实例,而不会弄乱指针赋值.

解决方法

你不能.在C 03中,您无法在ctor-initalization列表中初始化数组.但是你可以在构造函数体中完成它(技术上它不再是初始化).

那是

struct x
{
    int a[4];
    x():a({1,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/118140.html

猜你在找的C&C++相关文章