当前位置: 首页 > 知识库问答 >
问题:

传递“const”此参数将丢弃限定符[-fppermissive]

曹铭晨
2023-03-14

我有一个类缓存,它的函数write指定为

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”作为“bool Cache::write(const MemoryAccess)”的“this”参数传递

this参数是特定于编译器的,它有助于代码混乱和中断本地命名空间变量优先级。但这样的变量并没有在这里传递。

共有3个答案

岳池暝
2023-03-14

此外,如果类的方法返回任何成员的指针,则在返回类型示例之前,不应忘记write const:

<代码>常量浮点*getPosition()常量{…}

祁奇略
2023-03-14

当您通过指向对象的指针调用方法时,此对象将作为此指针隐式传递给该方法<代码>c可能具有类型常量缓存*。由于方法写入未声明为常量,因此它具有非常量指针,该指针可从其主体访问,需要丢弃c的常量限定符。

金阳华
2023-03-14

由于c的类型为const Cache*,因此您只能在其上调用const成员函数。

您有两种选择:

(1) 从c的声明中删除const;

(2) 更改缓存::write()如下:

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

(请注意末尾添加的常量。)

 类似资料: