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   

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

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

1 ответ

Решение

Здесь только один 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
Другие вопросы по тегам