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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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