【发布时间】:2021-06-04 22:33:02
【问题描述】:
using T=int[8][8]; //1
//2
T a={0}; //3
void f(T b){ //4
a=b; //5
} //6
即使在调用函数 f 时 a 和 b 都应该是 T 类型, 我的编译器说第 5 行有一个错误:“将 'int(*)[8]' 分配给 'T' {aka 'int [8][8]'} 时的类型不兼容”。 为什么 b 不像我在第 4 行中声明的那样属于 T 类型?
【问题讨论】:
-
您不能将一个数组分配给另一个数组。你需要复制。
-
这是标准的。将参数声明为数组将始终将其视为指针,因为数组指向指针 decay。
-
但主要问题不是衰减,而是您尝试分配给无效的数组(如前所述)。如果您需要分配给数组,请使用
std::vector或std::array。