我有
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 *
”时出现“不兼容的类型”。
如何设置结构内的数组?
答案 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可能就是你想要的。