error: passing 'const A' as 'this' argument of 'void A::hi()' discards qualifiers [-fpermissive]hatası: 'const…' ifadesi 'bu' argümanı '…' niteleyicileri atar
Neden bu hatayı alıyorum anlamıyorum, nesnenin referansını geçerek hiçbir şey döndürmüyorum Ve işte bu.
#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
Ben const doğruluğunu kullanarak ama şimdi aynı yöntemi içindeki yöntemleri çağırmak için çalışıyorum ve aynı hatayı alıyorum, ama garip şey ben olmasıdır sabit referansı bu yönteme geçirmeyen m.
#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;
}
error: passing 'const A' as 'this' argument of 'void A::hello()' discards qualifiers [-fpermissive]
error: passing 'const A' as 'this' argument of 'void A::world()' discards qualifiers [-fpermissive]
'hi',“ non-'const ”üye işlevidir; '' '' const’dir. –
geçişi bir (örtük) bağımsız değişken olarak anlamına gelir. Dönen bir şey yok. – Deduplicator
Olasının [xxx'in 'this' argümanı olarak niteleyici atanması [xxx: xxx olarak iletilmesi] 'nin olası kopyası (http://stackoverflow.com/questions/5973427/error-passing-xxx-as-this-argument-of-xxx-discards- niteleyiciler) –