Вопрос по gcc, g++ – передача ‘const этот аргумент отбрасывает квалификаторы [-fpermissive]

34

У меня есть классCache который имеет функцию записи, указанную как

bool write(const MemoryAccess &memory_access, CacheLine &cl);

Я называю эту функцию вот так.

const Cache *this_cache;
c = (a==b)?my_cache:not_cache;
c->write(memory_access,cl);

Приведенная выше строка дает мне следующую ошибку

"passing ‘const Cache’ as ‘this’ argument of ‘bool Cache::write(const MemoryAccess&, CacheLine&)’ discards qualifiers [-fpermissive]."

Аргумент this зависит от компилятора, который помогает в манипулировании кодом и нарушении приоритета локальной переменной пространства имен. Но такая переменная здесь не передается.

the this argument is compiler specific which helps in code-mangling and breaking local namespace variable priority??? NPE
Пожалуйста, попробуйте исправить ваш пример: вы говорите о функцииwriteтогда вы звонитеread, Где вы заявляетеmemory_access а такжеcl? betabandido

Ваш Ответ

3   ответа
4

этот объект неявно передается методу какthis указатель.c вероятно, имеет типconst Cache*, С методомwrite не объявлен какconstимеет неконстантностьthis указатель доступен из его тела, требующегоconst классификаторc быть отброшенным

0

если метод вашего класса возвращает указатель на какой-либо член, вы не должны забывать писать const, прежде чем возвращать пример типа:

const float * getPosition() const{...}

43

c имеет типconst Cache *Вы можете только позвонитьconst функции-члены на нем.

У вас есть два варианта:

(1) удалитьconst из декларацииc;

(2) изменитьCache::write() вот так:

 bool write(const MemoryAccess &memory_access, CacheLine &cl) const;

(Обратите внимание на добавленныйconst в конце.)

@ Prathmesh.kallurkar:parashift.com/c++-faq-lite/const-correctness.html#faq-18.10
какое значение имеет const в конце подписи ?? Что именно мы имеем в виду, когда говорим, что это постоянно. Разве это не должно быть постоянным по умолчанию? prathmesh.kallurkar

Похожие вопросы