C ++ константный двойной указатель

Я хочу сделать константный двойной указатель указывает на постоянный указатель указывает на постоянный двойной. Я начал делать это (конечно, я делаю небольшой поиск в книгах, и я гуглил это) с нуля и думаю, что делают следующие три:

const double* cp; //pointer to a constant double
double *const cp; //constant pointer
const double *const cp; //constant pointer to a constant double

Я думал, что следующий шаг — написать постоянный двойной указатель

double **const cp;// double constant pointer

Затем я объединяю последние два утверждения и пишу

const double *const cp = arr[0];
double **const cp1 = arr ;

где arr — динамически размещаемый массив двойных измерений.
После этого я попытался проверить, что я сделал, и написал нижеприведенные утверждения, ожидая, что все они получат ошибку.

**cp1 = 1;    // didn't produce error
*cp1 = arr[4];    // didn't produce error
cp1 = new double*[5]; //produce error

Дело в том, что я не смог сделать то, что описал выше, постоянный двойной указатель указывает на постоянный указатель, указывает на постоянный двойной. Как я могу это сделать?

Заранее спасибо.

2

Решение

Здесь только один const в

double **const cp1 = arr ;
//       ^^^^^

поэтому я не уверен, почему вы ожидаете, что два других назначения приведут к ошибке.

Если вы хотите, чтобы это было const на всех уровнях вам нужно

const double *const *const cp1 = arr;
//                         ^ cp1 is ...
//                  ^ a const pointer to ...
//           ^ a const pointer to ...
// ^ a const double
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]