Ich verstehe nicht, warum ich diesen Fehler bekomme, ich gebe nichts zurück, nur die Referenz des Objekts übergeben und das ist alles.Fehler: Übergabe 'const ...' als 'dieses' Argument von '...' löscht Qualifiers
#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
Ich reparierte es const Korrektheit verwenden, aber jetzt innerhalb der gleichen Methode Methoden aufrufen und ich bekomme den gleichen Fehler Ich versuche, aber die seltsame Sache ist, dass ich Ich übergebe den Verweis auf diese Methode nicht.
#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' ist eine Nicht-' const' Elementfunktion; 'a' ist' const'. –
Weitergabe bedeutet als (implizites) Argument. Hat nichts mit der Rückkehr zu tun. – Deduplicator
Mögliches Duplikat von [Fehler: xxx übergeben als 'dieses' Argument von xxx verwirft Qualifier] (http://stackoverflow.com/questions/5973427/error-passing-xxx-as-this-argument-of-xxx-discards- Qualifier) –