程序无法编译:将 'int (*)[3][3]' 赋值为 'int [9][3][3]' 中的不兼容类型
Program does not compile: incompatible types in assignment of ‘int (*)[3][3]’ to ‘int [9][3][3]’
我有一个类board
:
class board{
private:
int data[9][3][3] = {};
public:
board(int dataa[9][3][3]);
};
board::board(int dataa[9][3][3]){
this->data = dataa; // error from title here!
我认为该错误可能与数组本身是一个指针这一事实有关,因此它可能会干扰类型,但是鉴于构造函数的参数类型dataa
与data
的类型相同,代码看起来应该可以工作。任何帮助,不胜感激。
数组参数衰减为指针,因此参数中 int (=int data[9][3][3]
( 的数组 3 的数组 9 变为指向 int 的数组 3 的数组 3 的指针 (=int (*data)[3][3]
(。
但即使没有,C 和 C++ 也不允许您将数组分配给数组 - 您需要使用memcpy
(或逐个成员复制数组成员,但memcpy
通常更优化(。
//this->data = dataa
std::memcpy(this->data, dataa, sizeof(*dataa) * 9);
//^the innermost dimension got lost in the decay so specify it explicitly (9)
相关文章:
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- 程序无法编译:将 'int (*)[3][3]' 赋值为 'int [9][3][3]' 中的不兼容类型
- 从数组创建 Mat 时,'cv::Mat' 和 'int' 类型不兼容
- 错误:将"long int (*)[4]"分配给"long int [4][4]"时的类型不兼容
- 操作数类型不兼容("int"和"const char*")
- MKDIR 在 C++ 系统调用中失败 - int 类型的参数与 const char* 类型的参数不兼容
- 错误:在 GEANY 中将"int"赋值为"char [1]"时类型不兼容
- 调用函数时出错:"类型为"int"的参数与类型为"int *"的参数不兼容"
- gcc 的 -Wconversion 是否与使用比 int 短的整数类型的复合赋值(+= 等)不兼容?
- 错误:操作数类型不兼容("int"和"const char*")c++
- C:x86 英特尔内在函数对 _mm_log2_ps() -> 错误的用法:不兼容的类型"int"?
- 数组到数组 -- 将'int*'分配给 'int 错误C++中的不兼容类型
- C - 使用类型为 'int 的表达式初始化'int *'的不兼容指针类型
- 错误:将"int"赋值为"int[2]"时的类型不兼容
- 当 c++ 说"int 与 int* 不兼容"时该怎么办?
- (Dev-c++) 将'int'分配给'char[1]'的不兼容类型
- 不会在将'int*'分配给'int [0]'时编译不兼容的类型
- 类型 "unsigned int *" 的参数与类型 "size_t *" 的参数不兼容
- 类型 'int' 的参数与类型 'char' 的参数不兼容