Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fehler: == Operator überladen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.07.2003, 21:12 Uhr
~Thomas
Gast


Habe die Klasse Würfel und möchte den "==" Operator überladen.

Es kommt die Fehlermeldung raus:
'==' : Überladene Member-Funktion 'bool (const class wuerfel &) const' nicht in 'wuerfel' gefunden


C++:
bool Wuerfel::operator == (const Wuerfel &quelle ) const
{
return (seiten[0] == quelle.o(0) && seiten[1] == quelle.o(1) && ...);

}


Dieser Post wurde am 04.07.2003 um 12:48 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2003, 21:15 Uhr
~Thomas
Gast


Smilis waren aktiviert... &)

'==' : Überladene Member-Funktion 'bool (const class wuerfel &) const' nicht in 'wuerfel' gefunden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.07.2003, 21:27 Uhr
Pablo
Supertux
(Operator)


Hast du in der Definition der Klasse (ich nehme an in einer separaten .h Datei) genau die selbe Zeile stehen? (wenn ich mich nicht irre, muss es keine Leerzeichen zwischen operator und == stehen)

Wenn du Wurfel:: aufrufst, dann sucht in der Deklaration, findet keien solchen Prototy und meldet sich wieder mit so einem Fehler.

In der Deklaration muss stehen:

C++:
class Wurfel
{
// blablabla
bool operator==(const Wuerfel &quelle );
// oder auch bool operator==(const Wurfel&);
// blabla
};


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 03.07.2003 um 21:29 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.07.2003, 22:03 Uhr
virtual
Sexiest Bit alive
(Operator)


Anmerkung:
1. operator und == koennen natürlich zusammengeschrieben werden.
2. Auch in der Klasse darf das "const" nicht vergessen werden.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.07.2003, 11:28 Uhr
~Thomas
Gast


Hi!

Natürlich das Const vergessen!!! Danke!

Aber wenn ich in der Klasse das Const hingebe:



error C2662: 'o' : this-Zeiger kann nicht von 'const class wuerfel' in 'class wuerfel &' konvertiert werden
(beim return).


Code:
int wuerfel :: i(int s, char wert)              
{
seiten[s] = wert;

return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.07.2003, 11:33 Uhr
~Thomas
Gast


Mache lauter Plödsinn!

Der Code von der "Ausgabe Funktion"

Code:
char wuerfel :: o(int s)            
{

return seiten[s];
}


Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.07.2003, 12:38 Uhr
~0xdeadbeef
Gast


Lass das const weg. Ansonsten beschwert sich der Compiler über Methodenaufrufe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.07.2003, 13:20 Uhr
~Thomas
Gast



Danke!!!
Verstehe ich nicht ganz.
Aber verstehe auch nicht wieso ich ein const machen hätte sollen.

Jedenfalls Danke!!!

Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.07.2003, 13:20 Uhr
ao

(Operator)


@deadbeef: Halt, stop. Der const-qualifier hat durchaus seinen Sinn. Richtig und konsequent eingesetzt hilft er, Programmierfehler zu vermeiden.

@Thomas: Die Methode wuerfel::o sieht so aus, als ob sie auch als const qualifiziert werden könnte.

Regel: Alle Methoden und Operatoren, die ihre eigene Instanz (also *this) nicht verändern, können const sein. Wenn man damit anfängt, muß man es natürlich bis zum Ende durchziehen, sonst stolpert man irgendwann über solche Dinge wie Thomas jetzt. Aber es lohnt sich, denn wenn man dem Klassenheader schon ansehen kann, wodurch eine Instanz verändert werden kann und wodurch nicht, wird vieles schneller klar.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: