错误:传递' const A'作为'这个' ' void A :: hi()'的论点丢弃 限定符[-fpermissive]
我不明白为什么我会收到此错误,我没有返回任何内容只是传递对象的引用,就是这样。
#include <iostream>
class A
{
public:
void hi()
{
std::cout << "hi." << std::endl;
}
};
class B
{
public:
void receive(const A& a) {
a.hi();
}
};
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;
}
@edit
我使用const正确性修复它但现在我试图在同一个方法中调用方法并得到相同的错误,但奇怪的是我没有传递对此方法的引用
#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;
}
错误:传递&#39; const A&#39;作为&#39;这个&#39;参数&#39; void A :: hello()&#39; 抛弃限定符[-fpermissive]
错误:传递&#39; const A&#39;作为&#39;这个&#39; &#39; void A :: world()&#39; 抛弃限定符[-fpermissive]