如何在c ++中的struct中设置int数组

时间:2014-02-05 19:24:54

标签: c++ arrays struct

我有

struct board{
    int x[3];
    int y[3];
};

// in the class PatternReader
board PatternReader::testPattern1DX() {
   struct board aBoard;
   int x[3] = { 1,1,1 };
   aBoard = x;
   return aBoard;
}

错误是“分配int *”时出现“不兼容的类型”。

如何设置结构内的数组?

3 个答案:

答案 0 :(得分:4)

您无法分配数组。但是,您可以初始化结构:

board PatternReader::testPattern1DX() 
{
   board aBoard = { 
       {1, 1, 1}, 
       {2, 2, 2} 
   };
   return aBoard;
}

这会初始化y以及x

答案 1 :(得分:1)

向board结构添加初始化函数:

struct board
{
   int x[3];
   int y[3];

   void initX(int* values)
   {
      for(int i = 0; i < 3; i++)
         x[i] = values[i]
   }
};

然后使用它:

board PatternReader::testPattern1DX() 
{
   struct board aBoard;
   int x[3] = { 1,1,1 };
   aBoard.initX(x);
   return aBoard;
}

答案 2 :(得分:0)

您的代码

int x[3] = { 1,1,1 };
aBoard = x;

正在创建一个int *类型的变量,其初始值为1,1,1。然后,您尝试将其分配给 board 类型的变量。你不想那样做。我想你打算:

int x[3] = { 1,1,1 };
aBoard.x = x;

请注意aBoard末尾的 .x 。但是,这仍然是错误的。你不能分配那样的数组。查找“复制数组”。 Is there a function to copy an array in C/C++?

老实说,我建议让board成为一个带有构造函数的类,然后你可以让构造函数按你想要的那样运行,并且还会考虑重载赋值运算符。但是现在,尝试从x复制到aBoard.x可能就是你想要的。

相关问题