Allgemeine Frage zu Templates
-
Hi,
ich hätte da eine Allgemeine Frage zu Templates, aber erstmal code:
class Vector3 { public: // ... __forceinline CVector3D& operator+=(const CVector3D& v) { x += v.x; y += v.y; z += v.z; return (*this); } template<class T> __forceinline CVector3D& operator+= (const T& value) { x += value; y += value; z += value; return (*this); } float x,y,z; }; Vector3 MyVector1, MyVector2; MyVector1 += 4.0f; MyVector2 += 2.5f; MyVector1 += MyVector2;
Würde der überladene Template operator den operator für Vector3 ersetzen? Würde der code richtig funktionieren? Gibt es verbesserungen im code?
-
Nein, das template wird den andere operator nicht ersetzen. Das machen templates nie.
Verbesserung: das template weglassen:
Wenn v ein Vektor ist, dann macht v+3 einfach keinen Sinn und sollte deswegen einen Compiler-Fehler ergeben. Vielleicht hat sich nur jemand vertippt und meinte v*3?