iteratoren & templates - wie funktoniert es?
-
Das ist kein Problem der Iteratoren. Du vergleichst das, worauf der Iterator zeigt, mit einem normalen Objekt der Klasse Human. Diese Klasse hat offensichtlich keinen operator!=.
-
hat T vielleicht keinen operator!= definiert?
-
ok danke, aber die "begin" methode liefert ja einen iterator, wie kann ich das problem am besten lösen? ... also versteh noch nicht ganz wie ich das am besten umgehen soll...
-
Mit den Iteratoren hat das immernoch nichts zu tun. Das würde auch passieren, wenn Du "x != x" schreibst.
Spendiere der Klasse Human einen operator!=.
-
Auch wenn diese Frage sicher total doof ist aber:
Ist nicht != ein Standardoperator?
Ich muss ja gestehen das ich gar nicht weiß was ihr damit meint das ich Human einen Operator geben soll. Also bisher habe ich noch nie irgendeiner Klasse einen Operator gegeben.Wäre da auch für jeden weiterführenden Link sehr dankbar.
Grüße
Daniel
-
class Human // hast du laut fehlermeldung irgendwo mal gschrieben { // viel blubb hier, aber kein operator!= }; ... Human a; Human b; if(a != b) // nein, nicht möglich, was soll er denn vergleichen? alle member-variablen? nur bestimmte? ganz was anderes?
MfG SideWinder
-
Wenn du nur feststellen willst, ob es das gleiche Objekt ist, dann reicht Pointervergleich und dafür musst du nix schreiebn.
-
Ehm, ich empfehle dringend ein C++ Tutorial, sei es noch so kurz. Zum Beispiel das hier:
http://www.cplusplus.com/doc/tutorial/Da hast du dann auch sowas drin, wie Operatoren überladen:
http://www.cplusplus.com/doc/tutorial/classes2.htmlUnd der Titel des Threads ist nun etwas falsch gewählt
Grüssli
-
ich finde das übrigens völlig unöglich das c++ keinen standard operator ==
schreibt,
1 . meistens ist es eh ein vergleich aller member2 . erweitert man die klasse um ein member,
vergisst man leicht, das man man operator== auch noch anpassen muss3. operator = wird ja auch vordefiniert
-
ist ja ein crosspost: http://entwickler-forum.de/showthread.php?t=48497