ivan Asked:2022-07-23 23:23:58 +0800 CST2022-07-23 23:23:58 +0800 CST 2022-07-23 23:23:58 +0800 CST 创建一个二维数组c ++ 772 using vector = bool*[4]; vector* matrix[3]; matrix[0] = new vector; // !!! 无法在赋值中将 'bool**' 转换为 'bool* (*)[4]' 我无法弄清楚问题是什么...... c++ 1 个回答 Voted Best Answer AR Hovsepyan 2022-07-24T03:38:05+08:002022-07-24T03:38:05+08:00 事实上,操作符new是一个不能接受类型的函数bool* (*)[4],因此类型会自动转换为指向数组元素的指针(与其他函数一样),即 to bool**,因此,操作符new将返回一个指针to bool**,但数组元素的类型matrix是指向 的指针bool* (*)[4]。 要修复,要么您不需要通过运算符创建元素,new要么您matrix必须存储bool**. 一般来说,据我说,你想做: using vector = bool* [4]; vector matrix[3]; //пока не ясно что от вас требуют 这已经足够了。matrix包含 3 个静态数组类型的元素,而不是它,您不能推送动态数组(指向它的指针)。并且,例如,matrix[0]将是第一个数组的名称,并且数组名称不能分配其他东西,它可以简单地使用或转换为元素指针:bool** arr1 = matrix[0];
事实上,操作符
new
是一个不能接受类型的函数bool* (*)[4]
,因此类型会自动转换为指向数组元素的指针(与其他函数一样),即 tobool**
,因此,操作符new
将返回一个指针tobool**
,但数组元素的类型matrix
是指向 的指针bool* (*)[4]
。要修复,要么您不需要通过运算符创建元素,
new
要么您matrix
必须存储bool**
.一般来说,据我说,你想做:
这已经足够了。
matrix
包含 3 个静态数组类型的元素,而不是它,您不能推送动态数组(指向它的指针)。并且,例如,matrix[0]
将是第一个数组的名称,并且数组名称不能分配其他东西,它可以简单地使用或转换为元素指针:bool** arr1 = matrix[0];