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 werden
    

    m_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() const

    dein 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!

    error c2662


Anmelden zum Antworten