error C2662: this-Zeiger kann nicht konvertiert werden
-
Hi

Ich habe 2 Klassen gegeben: Vector3 und Ray.
Eine Methode von Vector3 lautet:const Vector3 Vector3::normalized() { Vector3 v(*this); v.normalize(); return v; }Das Objekt wird dabei mithilfe eines Kopierkonstruktors kopiert, die Kopie normalisiert und zurückgegeben. (Vector3::normalize() ist nicht const)
Der Konstruktor der Klasse Ray sieht folgendermaßen aus:
Ray::Ray(const Vector3 &origin, const Vector3 &direction) : m_origin(origin), m_direction(direction.normalized()) { }An der Stelle m_direction(direction.normalized()) erhalte ich nun den Fehler
error C2662: 'Vector3::normalized': this-Zeiger kann nicht von 'const Vector3' in 'Vector3 &' konvertiert werdenm_direction ist vom Typ Vector3. Lässt man das const bei der parameterdeklaration von direction weg, funktioniert alles. Dies ist jedoch unerwünscht.
Das Problem sollte doch auch anders zu lösen sein. Leider bin ich bisher nicht darauf gekommen.
Ich wäre echt dankbar, wenn mir jemand bei dem Problem helfen kann.
Mfg
-
so sollte der fkt-rumpf aussehen:
Vector3 Vector3::normalized() constdein const bezog sich auf den rückgabetypen (hier sinnlos), das const dahinter darauf, dass es nichts am eigentlichen objekt ändert
bb
-
Ah, alles klar. Vielen Dank.

-
Da die Antwort ja schon gesagt wurde wollte ich hier nur eben noch etwas anmerken.
Du kannst in der msdn-library auch ganz einfach in die Suche den betreffenden Fehler oder error eingeben. Meistens erhältst du auch dort eine zufriedenstellende Antwort!