Я передаю ссылку на объект функции, и я использовал const, чтобы указать, что это метод только для чтения, но если я вызываю другой метод внутри этого метода, эта ошибка возникает, даже если я не передаю ссылку в качестве аргумента .
ошибка: передача 'const A' как 'this' аргумента 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;
}
const
, должен вызывать толькоconst
методы и не пытаться изменять переменную-член (кромеmutable
). - person Niall   schedule 17.11.2014this
. - person Oktalist   schedule 17.11.2014hello(); world();
на самом деле означаетthis->hello(); this->world();
. - person Oktalist   schedule 17.11.2014sayhi
вызывается черезa.sayhi()
,this
указывает на тот же объект, на который ссылаетсяa
. - person Oktalist   schedule 17.11.2014