Создание двумерного массива с++
using vector = bool*[4];
vector* matrix[3];
matrix[0] = new vector; // !!!
cannot convert 'bool**' to 'bool* (*)[4]' in assignment
Никак не могу понять в чем проблема...
Ответы (1 шт):
Дело в том, что оператор new является функцией, которая не может принять тип bool* (*)[4], потому тип автоматически преобразовывается в указатель на элемент массива(как и в других функциях), то есть в bool**, и, соответственно, оператор new вернет указатель на bool**, но типом элемента массива matrix является указатель на bool* (*)[4].
Чтобы исправить, или не нужно создать элементы через оператор new или же matrix должен хранить bool**.
А вообще, по мне, вы хотели сделать:
using vector = bool* [4];
vector matrix[3]; //пока не ясно что от вас требуют
Этого будет достаточно. matrix содержит 3 элемента типа статического массива, и вместо его не можете запихнуть динамический массив(указатель на него). И, например , matrix[0] будет именем первого массива, а имени массива нельзя присвоить что то другое, ее можно просто использовать или преобразовать в указатель элемента:
bool** arr1 = matrix[0];