传递'const这个参数丢弃限定符[-fpermissive]

时间:2012-05-26 11:20:57

标签: gcc g++

我有一个类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]。“

这个参数是特定于编译器的,它有助于代码修改和破坏本地命名空间变量优先级。但是这样的变量并没有在这里传递。

3 个答案:

答案 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{...}