2017-02-15 1 views
1
void function(int & const a){ 
    a=4; 
} 

выше фрагмент отлично работает в Visual Studio, но не в DevC++ и других Иды,разница в реализации типов данных и сопзЬ var_name в Visual Studio и другие

Ошибка сбщ: 'const' qualifiers cannot be applied to 'int&'

Это имеет смысл, что мы инициализируем постоянный указатель на int. Если необходимо упомянуть значение константы указателя при инициализации он все еще не работает, но отлично работает в Visual Studio

main(){ 
    int a=10; 
    int & const p_a=&a; //works in Visual Studio 
    cout<<p_a<<endl; 
} 

Объяснения относительно ограничения и способа решения было бы полезно

+0

Это не указатель, но ссылка. – songyuanyao

+0

Если вы хотите передать аргумент по ссылке на const, он должен быть 'fn (const int & p)' вместо этого. Ваш компилятор, вероятно, выдает предупреждение * C4227 анахронизм *. –

+0

Я хотел, чтобы указатель был постоянным и значение изменялось –

ответ

0

int & const не действительный синтаксис, int& является ссылкой (до int), которая не может быть квалифицирована const. Точнее, вы не можете объявить const-ссылку. С другой стороны, объявление ссылки на const (то есть const int &) является прекрасным.

Я хотел указатель быть постоянным, а значение быть изменяемым

Что вы хотите указатель, поэтому он должен быть int * const (т.е. константного указателя на неконстантный int).

Смежные вопросы