Ich versuche, den *
Operator zu überladen, um zwei Objekte zu multiplizieren (Punktprodukt). Diese Objekte können Point3D
, Vector3D
oder Normal
sein. Sie alle haben grundsätzlich die gleiche Struktur (einen x-, y- und z-Wert), ich habe sie nur für die Semantik aufgeteilt.Operator in C++ überladen
Die Linie, die mir Mühe geben wird, ist dies:
float t = (point - r.origin)*normal/(r.direction * normal);
Hier Punkt und r.origin sind ein Point3D
, normal ein Normal
und r.direction ist ein Vector3D
. In den Header-Dateien für diese Klassen habe ich die folgenden Überlastfunktionen:
In Vector3D.h:
Vector3D operator *(Normal& n);
In Point3D.h:
Point3D operator -(Point3D& p);
Point3D operator *(Normal& n);
Der Fehler ich erhalte, ist:
Angenommen, ich habe die Funktionen in der .cpp-Datei korrekt ausgefüllt, gibt es etwas Dummes, das ich getan habe Hier? Ignoriere auch die Tatsache, dass es noch keinen Divisionsoperator gibt ... Es ist in der Pipeline!
Prost
Prost für die Hilfe, aber sie alle in const zu ändern gibt mir 'disqualifiziert Qualifiers' Fehler. Sorry, ich habe gestern nur mit C++ begonnen:/ –
Vielleicht könnten Sie uns ein [* complete * Beispiel] (http://sscce.org) geben, das Ihr Problem aufzeigt. Wir können nur raten, wie der Rest Ihres Codes aussieht, und das ist für niemanden produktiv. –
'discards qualifiers' bedeutet, dass Sie etwas in der Funktion aufrufen, die kein 'const' enthält, aber wahrscheinlich sollte. Zeige uns mehr Code. –