我有一个类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);
以上行给出了以下错误
“将'const Cache'作为'bo'的'this'参数传递给bool Cache :: write(const MemoryAccess&,CacheLine&)'丢弃限定符[-fpermissive]。“
这个参数是特定于编译器的,它有助于代码修改和破坏本地命名空间变量优先级。但是这样的变量并没有在这里传递。
答案 0 :(得分:44)
由于c
的类型为const Cache *
,因此您只能在其上调用const
个成员函数。
您有两种选择:
(1)从const
;
c
(2)像这样改变Cache::write()
:
bool write(const MemoryAccess &memory_access, CacheLine &cl) const;
(注意最后添加的const
。)
答案 1 :(得分:4)
当您通过指向对象的指针调用方法时,此对象将作为this
指针隐式传递给方法。 c
可能包含const Cache*
类型。由于方法write
未声明为const
,因此它具有非const this
指针,可从其正文中访问const
限定符c
。< / p>
答案 2 :(得分:0)
此外,如果你的类方法在任何成员上返回指针,那么在返回类型示例之前你不应该忘记写const:
const float * getPosition() const{...}