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:
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
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); } }
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Vector a, b; Vector c = a + ( b * 0.5 );
Luc Le Blanc
Partager