Bonjour !

Cette discussion m'a semblé importante, je n'arrive cependant pas à comprendre les subtilités.

Cela demande un peu de réflexion pour y arriver, mais, une fois que tu penses à utiliser typedef le principe est cependant simplissime
J'ai beau "réflexionner", ces typedef, ils servent à quoi ?!

Le code n'est pas complet mais j'imagine la suite ainsi (dites moi si je me trompes)

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
struct Point2DFlag{};
struct Point3DFlag{};
 
template <typename Type, typename Flag>
class Point;
 
template <typename Type>
class Point<Type, Point2DFlag>
{
    public:
        typedef Type value_type;//Ils permettent de récupérer sur quel type on travaille ?
        typedef Point2DFlag flag_type;//Et sous quelle forme ?
        typedef Point<value_type, flag_type> point_type;//Là je vois pas trop...
        //Ensuite ce n'est que supposition :
        Point<Type, Point2DFlag>( const value_type x, const value_type y ) : x( x ), y( y ) {}
        const value_type GetX() const { return x; }
        const value_type GetY() const { return y; }
 
    private:
        value_type x;
        value_type y;
};
Pourquoi ne pas faire simplement :
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
struct Point2DFlag{};
struct Point3DFlag{};
 
template <typename Type, typename Flag>
class Point;
 
template <typename Type>
class Point<Type, Point2DFlag>
{
    public:
        Point( const Type x, const Type y ) : x( x ), y( y ) {}
        const Type GetX() const { return x; }
        const Type GetY() const { return y; }
 
    private:
        Type x;
        Type y;
};
Je ne vois pas vraiment la différence..

La suite me pose aussi problème, j'y reviendrais sans doute après.