C ++类,在构造函数初始化期间分配值

时间:2011-02-09 15:49:22

标签: c++

我有一个2D数组,我声明了类私有成员的一部分。当我调用构造函数时,我开始为2D数组赋值。但每次我这样做,我都会遇到错误C2059。为了确保没有其他因素导致该错误,我注释掉了该行,并且编译器完成了一个二进制文件。

tried:
Variable[row] = { 0, 1, 2, 3};
Variable[row][] = { 0, 1, 2, 3};
Variable[row][4] = { 0, 1, 2, 3};

没有运气,任何线索。提前谢谢。

3 个答案:

答案 0 :(得分:3)

此语法仅用于创建对象。

int array[4] = {1, 2, 3, 4};

创建数组后,必须使用循环为其赋值。

这是一个简短的例子:

class A
{
    int array[4];

    public:
    A()
    {
        // Here, array is already created
        // You can _assign_ values to it
    }
};

如果要在构造函数中实例化时给它赋值,唯一的方法是使用初始化列表。不幸的是,你不能用静态数组做到这一点。

请参阅此this thread.

答案 1 :(得分:1)

不幸的是,我们还不能正确初始化作为类成员的数组。我不确切地知道你的声明如何,但这里有一个例子:

class X
{
    int Variable[3][4];

public:
    X()
    {
        const int temp[][4] = { { 1, 2, 3, 4}, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
        const int sz = sizeof(Variable)/sizeof(**Variable);
        std::copy(*temp, (*temp) + sz, *Variable);
    }
};

答案 2 :(得分:0)

由于你的问题不够明确,我所能做的就是展示一个简单的例子。

将2D数组初始化为

//you may "optionally" provide the size of first dimension 
int arr[][4]  = {
          {1,2,3,4},
          {11,12,13,14},
          {21,22,23,24}
        };

并且被收录为,

for ( int i = 0 ; i < 3 ; ++i )
{
      for ( int j = 0 ; j < 4 ; ++j )
      {
          cout << arr[i][j] << endl;
      }
}

ideone上的在线演示:http://www.ideone.com/KmwOg

你在做同样的事吗?