аргумент неконстантного указателя к константному параметру двойного указателя

Модификатор const в C ++ перед звездочкой означает, что с помощью этого указателя нельзя изменить значение, на которое указывает указатель, а сам указатель можно сделать так, чтобы он указывал на что-то другое. В приведенной ниже функции

void justloadme(const int **ptr)
{
    *ptr = new int[5];
}

int main()
{
    int *ptr = NULL;
    justloadme(&ptr);
}

justloadme нельзя разрешать редактировать целочисленные значения (если они есть), указываемые переданным параметром, в то время как она может редактировать значение int * (поскольку const не следует за первой звездой), но все же, почему я получаю ошибку компилятора в GCC и VC ++?

GCC: ошибка: неправильное преобразование из int ** в const int **

VC ++: ошибка C2664: «justloadme»: невозможно преобразовать параметр 1 из «int **» в «const int **». Конверсия теряет квалификаторы

Почему говорится, что конверсия теряет классификаторы? Isn» Получает ли он const квалификатор? Кроме того, разве это не похоже на strlen (const char *) , где мы передаем неконстантный char *

6
задан legends2k 16 June 2014 в 09:10
поделиться