Surcharger un opérateur sans fuite de mémoire
Je dois porter en C++ des méthodes mathématiques en C# mettant à profit la surcharge des opérateurs. Je ne souhaite surtout pas devoir les réanalyser, simplement les porter telles quelles, notamment pour en faciliter la mise à jour lorsque l'auteur en modifiera le source C#.
Ex. C# de surcharge:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| struct Vector
{
public float x, y, z;
public Vector(float x, float y, float z)
{
this.x = x;
this.y = y;
this.z = z;
}
public static Vector operator +(Vector a, Vector b)
{
return new Vector(a.x + b.x, a.y + b.y, a.z + b.z);
}
public static Vector operator *(Vector a, float b)
{
return new Vector(a.x * b, a.y * b, a.z * b);
}
} |
Quel prototype utiliser en C++ pour les méthodes + et * si je veux éviter une fuite de mémoire avec une opération comme:
Code:
1 2 3 4
|
Vector a, b;
Vector c = a + ( b * 0.5 ); |
sachant que C++ n'a pas de ramasse-miettes (garbage collector) et que la ligne ci-haut peut même se retrouver à l'intérieur d'une boucle?
Luc Le Blanc