Operator überladen funktioniert nicht



  • Hallo,
    ich benutzt VC++ 6 und versuche hier grade einen Operator in einer Klasse zu überladen, leider funktioniert es nicht und ich weiss nicht warum.

    Hier einmal die Funktion:

    //+ Operator überladen
    CVector2d tengineOGL32::CMath::CVector2d::operator + (CVector2d v2dVector) {
    	return CVector2d(teGetVector(OGL_VECTOR_X) + v2dVector.teGetVector(OGL_VECTOR_X), teGetVector(OGL_VECTOR_Y) + 
    		v2dVector.teGetVector(OGL_VECTOR_Y));
    }
    

    Und hier ein Stück aus dem Header

    class TE_DLL_EXPORT CMath {
    	private:
    
    	public:
    		class CVector2d {
    		private:
    			teFloat m_x, m_y;
    
    		public:
    			//Konstruktor
    			CVector2d();
    			//Konstruktor
    			CVector2d(teFloat x, teFloat y);
    			//+ Operator überladen
    			CVector2d operator + (CVector2d v2dVector);
    			//- Operator überladen
    			CVector2d operator - (CVector2d v2dVector);
    			//* Operator überladen
    			CVector2d operator * (teFloat fNum);
    			/// Operator überladen
    			CVector2d operator / (teFloat fNum);
    			//== Operator überladen
    			teBool operator == (CVector2d v2dVector);
    			//!= Operator überladen
    			teBool operator != (CVector2d v2dVector);
    			//Wert zurückgeben
    			teFloat teGetVector(eVector Vector);
    			//Wert setzen
    			teVoid teSetVector(eVector Vector, teFloat fValue);
    			//Vektor leeren
    			teVoid teClearVector();
    		};
    };
    

    Ausserdem hier die Fehlermeldung:
    E:\Projekte - C++\tengineOGL32\teOGLMath.cpp(39) : error C2143: Syntaxfehler : Fehlendes ';' vor 'tag::id'
    E:\Projekte - C++\tengineOGL32\teOGLMath.cpp(39) : error C2501: 'CVector2d' : Fehlende Speicherklasse oder Typbezeichner
    E:\Projekte - C++\tengineOGL32\teOGLMath.cpp(39) : fatal error C1004: Unerwartetes Dateiende gefunden

    Das zweitere kann aber nicht, weil ich doch CVector2d in dem Header deklariert habe ?

    Danke schonmal.
    Tschö
    Peter



  • Du hast irgendwo in deinem Programm ein ; vergessen.
    Wenn Du den Fehler abstellst, sollte der Rest funktioniren.



  • zaib__ schrieb:

    //+ Operator überladen
    CVector2d tengineOGL32::CMath::CVector2d::operator + (CVector2d v2dVector) {
    	return CVector2d(teGetVector(OGL_VECTOR_X) + v2dVector.teGetVector(OGL_VECTOR_X), teGetVector(OGL_VECTOR_Y) + 
    		v2dVector.teGetVector(OGL_VECTOR_Y));
    }
    

    Du musst den Rückgabewert auch noch genauer schreiben, also "tengineOGL32::CMath::CVector2d".



  • Danke schonmal für die Hilfe.

    Aber leider klappt es noch immer nicht, weder wenn ich

    return tengineOGL32::CMath::CVector2d(...);
    

    schreibe, noch hab ich nirgendwo ein ; vergessen. Woran könnte es noch liegen ? Ich bin echt fertig ...

    Tschö,
    Peter



  • operator void meint den rückgabetyp:

    tengineOGL32::CMath::CVector2d tengineOGL32::CMath::CVector2d::operator + (CVector2d v2dVector) //hier ganz am anfang
    
    { 
        return CVector2d(teGetVector(OGL_VECTOR_X) + v2dVector.teGetVector(OGL_VECTOR_X), teGetVector(OGL_VECTOR_Y) +  
            v2dVector.teGetVector(OGL_VECTOR_Y)); 
    }
    


  • Wow, danke 🙂 Jetzt funktioniert es 🙂



  • Ups, ja. Ich sollte mir beim Posten mal mehr Zeit nehmen 🙄


Anmelden zum Antworten