Überaldung von "="
-
friendgewährt einer Methode Zugriff auf private Daten einer Klasse (solltest du wissen). Deine beiden Methoden haben nicht die gleiche Signatur, weshalb die Implementation nicht als diefriendMethode erkannt wird. (constzuwenig)Übrigens wie mein Compiler richtig meckert, musst du so unbedingt den Copy-Konstruktor und den operator= überladen. Am besten gar keine Pointer verwernden.
-
Wenn ich deine Antwort richtig verstehe, muss ich also in der Implementierung das friend-Schlüsselwort auch noch schreiben, oder? Leider finde ich hierzu in meinem Buch/Unterlagen leider kein Beispiel wo das gezeigt wird an welche Stelle das friend platziert werden muss...
Edit: "friend" darf außerhalb einer Klasse nicht verwendet werden, sagt mein Compiler. Wo ist dann der Fehler?
Das friend den Zugriff auf private Vars/Methoden regelt weiß ich natürlich, deswegen hab ich es ja in der h-Datei auch hingeschrieben

-
[cpp]class Bitvector
{
...
friend std::ostream& operator << (std::ostream& output, Bitvector &bv);
}; [/cpp]std::ostream& operator << (std::ostream &output, const Bitvector &bv) { bv.bits; //hier gibts den Fehler! return output; }Das meinte ich. (Steht da doch auch(Hmm.. vielleicht auch etwas mehrdeutig))
-
Ich bin blind. Leider. Aber dennoch Danke

Nun hab ich die Überladung um das hier erweitert:
std::ostream& operator << (std::ostream &output, const Bitvector &bv) { for(unsigned int i=0; i<=bv.bits; i++) { if(i == 0) { output << bv.getBit(i); //Fehler } else if((i%4) == 0) { output << " " << bv.getBit(i); //Fehler } else if(i > 0) { output << bv.getBit(i); //Fehler } } return output; }Probleme macht nun die getBit()-Methode. Der Compiler sagt: "Fehler 1 error C2662: 'Bitvector::getBit': this-Zeiger kann nicht von 'const Bitvector' in 'Bitvector &' konvertiert werden"
Die getBit()-Methode gibt einen einzelnen char zurück. Wie greife ich korrekt auf Methoden aus Überladungen zu? Es liegt am const, nicht wahr? Muss ich nun die getBit() als const deklarieren?
-
vip@r schrieb:
Die getBit()-Methode gibt einen einzelnen char zurück. Wie greife ich korrekt auf Methoden aus Überladungen zu? Es liegt am const, nicht wahr? Muss ich nun die getBit() als const deklarieren?
Ja.
Sag mal: Wie lernst du eigentlich C++? Es sieht nämlich nicht so aus, als hättest du ein schlaues C++ Buch vor dir liegen. Man würde dann erwarten, dass du dann schon viel weiter wärst.
-
Sag mal, liest du eigentlich das, was der Compiler als Fehlermeldung ausgibt, das, was wir dir sagen und das was in deinem Buch steht?