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 gefundenDas 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