Создание двумерного массива с++

using vector = bool*[4];
vector* matrix[3];

matrix[0] = new vector; // !!!

cannot convert 'bool**' to 'bool* (*)[4]' in assignment

Никак не могу понять в чем проблема...


Ответы (1 шт):

Автор решения: AR Hovsepyan

Дело в том, что оператор 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];

→ Ссылка