I have a class Cache
which has a function write specified as
bool write(const MemoryAccess &memory_access, CacheLine &cl);
I am calling this function like this.
const Cache *this_cache;
c = (a==b)?my_cache:not_cache;
c->write(memory_access,cl);
The above line is giving me following error
"passing ‘const Cache’ as ‘this’ argument of ‘bool Cache::write(const MemoryAccess&, CacheLine&)’ discards qualifiers [-fpermissive]."
the this argument is compiler specific which helps in code-mangling and breaking local namespace variable priority. But such a variable is not being passed here.
Since c
is of type const Cache *
, you can only call const
member functions on it.
You have two options:
(1) remove const
from the declaration of c
;
(2) change Cache::write()
like so:
bool write(const MemoryAccess &memory_access, CacheLine &cl) const;
(Note the added const
at the end.)
When you call a method via a pointer to an object, this object is implicitly passed to the method as this
pointer. c
probably has type const Cache*
. Since method write
is not declared as const
, it has non-const this
pointer accessible from its body requiring const
qualifier of c
to be discarded.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With