operator !=-Demenz?

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

operator !=-Demenz?

Beitrag von Xin » Fr Jul 27, 2012 2:51 pm

Ich habe bei mir mal in den Quellen einiges umgestellt, aber an einer Ecke hakt es nun doch ganz gut...

Er meckert in Zeile 173 an, dass er "area != iconArea" nicht vergleichen kann. area und auch iconArea sind vom Typ XSD::Unit::Area.

Code: Alles auswählen

g++ | dimvalue (de/xsd/block/element).....
../../../../de/xsd/block/element/dimvalue.cpp: In Funktion »bool operator!=(const XSD::Unit::Area&, const XSD::Unit::Area&)«:
../../../../de/xsd/block/element/dimvalue.cpp:10:6: Fehler: Redefinition von »bool operator!=(const XSD::Unit::Area&, const XSD::Unit::Area&)«
../../../../de/xsd/unit/area.h:140:13: Fehler: »bool operator!=(const XSD::Unit::Area&, const XSD::Unit::Area&)« wurde vorher hier definiert
../../../../de/xsd/block/element/dimvalue.cpp: In Elementfunktion »virtual void XSD::Block::Element::DimValue::Refresh(unsigned int)«:
../../../../de/xsd/block/element/dimvalue.cpp:173:15: Fehler: keine Übereinstimmung für »operator!=« in »area != iconArea«
../../../../de/xsd/block/element/dimvalue.cpp:173:15: Anmerkung: Kandidat ist:
../../../../de/xsd/unit/course.h:96:13: Anmerkung: bool XSD::Unit::operator!=(XSD::Unit::Course, XSD::Unit::Course)
../../../../de/xsd/unit/course.h:96:13: Anmerkung:   keine bekannte Umwandlung für Argument 1 von »XSD::Unit::Area« nach »XSD::Unit::Course«
Allerdings ist in area.h der Operator definiert und zwar im globalen Namensraum:

Code: Alles auswählen

inline bool operator != ( XSD::Unit::Area const & lhs, XSD::Unit::Area const & rhs )
{ return lhs.Width != rhs.Width || lhs.Height != rhs.Height; }
Der Code wird auch eingelesen. Das gilt spätestens seitdem ich die Definition nochmal in die meckernde Datei geschrieben habe. Ihr seht ja oben, dass der operator != für XSD::Unit::Area doppelt definiert ist. Warum findet er dann den passenden Operator nicht? Area ist von nichts abgeleitet und hat mit XSD::Unit::Course nichts zu tun.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: operator !=-Demenz?

Beitrag von Xin » Fr Jul 27, 2012 2:55 pm

Narf... kaum hat man die Frage gestellt, sieht man die Lösung...


Operator != ( XSD::Unit::Course const & lhs, XSD::Unit::Course const & rhs ) war im Namensraum XSD::Unit definiert und nicht global.
Also fand er bei XSD::Unit::Area erstmal operator != für Course und suchte dann nicht mehr weiter...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten