微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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]);
   }

};

原文地址:https://www.jb51.cc/c/118140.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐