Как определить массив константных указателей в C ++? - PullRequest
0 голосов
/ 05 июня 2018

Есть ли способ определить массив указателей, чтобы любой указатель был константным?

Например, можно ли определить char** array, чтобы array[0] был константным, array[1] был константным и т. Д.., но array не является константным, а array[j][i] не является константным?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Для такого запроса вы можете использовать магический инструмент cdecl (также доступен как веб-интерфейс здесь ):

$ cdecl -+ %c++ mode
Type `help' or `?' for help
cdecl> declare x as array of const pointer to char
char * const x[]
cdecl> 
0 голосов
/ 05 июня 2018

char* const * pointer;.затем

pointer       -> non-const pointer to const pointer to non-const char (char* const *)
pointer[0]    -> const pointer to non-const char (char* const)
pointer[0][0] -> non-const char

Если вам нужен массив, тогда char* const array[42] = { ... };.

Если вы не знаете размер массива во время компиляции и должны выделить массив во время выполнения, вы можете использовать указатель тогда

int n = ...;
char* const * pointer = new char* const [n] { ... };
...
delete[] pointer;

Как видите, вы должны выполнить выделение и освобождение вручную.Даже вы сказали, что не хотите std::vector, но для современного C ++ использование std::vector или интеллектуальных указателей более уместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...