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?


Anmelden zum Antworten