Я хочу сделать константный двойной указатель указывает на постоянный указатель указывает на постоянный двойной. Я начал делать это (конечно, я делаю небольшой поиск в книгах, и я гуглил это) с нуля и думаю, что делают следующие три:
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
Дело в том, что я не смог сделать то, что описал выше, постоянный двойной указатель указывает на постоянный указатель, указывает на постоянный двойной. Как я могу это сделать?
Заранее спасибо.
Здесь только один 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
Других решений пока нет …