Bonjour,

J'ai créé deux classes vecteurs (un peu particulières pour ne pas utiliser les librairies par défaut), l'une Vect_i qui prend en paramètre des int, et l'autre Vect_f qui prend en paramètre des float, avec des opérateurs +, - ...

Les deux classes sont pratiquement identiques, alors j'aimerais bien alléger mon code pour ne pas avoir de duplication de code. Je pensais faire une classe abstraite en la surchargeant avec ça :

Vect(int const &a, int const &b);
Vect(float const &a, float const &b);

Mais avec un v = Vect(4, 7) qui sera appelé ? Je ne sais pas trop ce qui serait le mieux, une idée ? Merci d'avance

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef VECT_H
#define VECT_H
 
class Vect {
public:
    explicit Vect(int, int);
    explicit Vect();
    int x, y;
 
    void operator+=(Vect const& a);
    void operator-=(Vect const& a);
 
    int width, height;
 
};
 
bool operator==(Vect const& a, Vect const& b);
bool operator!=(Vect const& a, Vect const& b);
Vect operator+(Vect const& a, Vect const& b);
Vect operator-(Vect const& a, Vect const& b);
int coord_gbr(Vect const& a);
int coord_gray(Vect const& a);
bool is_null(Vect const &a);
bool control(Vect const &a);
 
#endif // VECT_H
 
#ifndef VECT_F_H
#define VECT_F_H
 
class Vect_f {
public:
    explicit Vect_f(float, float);
    explicit Vect_f();
    float x, y;
 
    void operator+=(Vect_f const& a);
    void operator-=(Vect_f const& a);
 
    float width, height;
 
};
 
bool operator==(Vect_f const& a, Vect_f const& b);
bool operator!=(Vect_f const& a, Vect_f const& b);
Vect_f operator+(Vect_f const& a, Vect_f const& b);
Vect_f operator-(Vect_f const& a, Vect_f const& b);
bool is_null_f(Vect_f const &a);
bool control_f(Vect_f const &a);
 
Vect_f cross(Vect_f const &v1, Vect_f const &w1, Vect_f const &v2, Vect_f const &w2);
 
#endif // VECT_F_H