我将对象的引用传递给函数,并且我使用const来表示它是只读方法,但是如果我在该方法中调用另一个方法,则会发生此错误,即使我没有将引用作为参数传递。
错误:传递' const A'作为'这个'参数' void A :: hello()'抛弃限定符[-fpermissive]
错误:传递' const A'作为'这个' ' void A :: world()'抛弃限定符[-fpermissive]
#include <iostream>
class A
{
public:
void sayhi() const
{
hello();
world();
}
void hello()
{
std::cout << "world" << std::endl;
}
void world()
{
std::cout << "world" << std::endl;
}
};
class B
{
public:
void receive(const A& a) {
a.sayhi();
}
};
class C
{
public:
void receive(const A& a) {
B b;
b.receive(a);
}
};
int main(int argc, char ** argv)
{
A a;
C c;
c.receive(a);
return 0;
}
答案 0 :(得分:10)
由于sayhi()
为const
,因此其调用的所有函数也必须声明为const
,在本例中为hello()
和world()
。您的编译器警告您const-correctness。