Bonjour, j'ai codé et tente de compiler quelques classes template pour gérer Points, Vecteurs, Droites, etc ... en 2D.

En tentant de mettre chaque classe dans un fichier hpp, impossible de trouver une astuce pour compiler, il me dit toujours que l'objet truc n'a pas été défini, etc ... Le fait est que j'arrive très bien à compiler en mettant tout mon code dans un seul fichier énorme, donc voici la structure :

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
#ifndef TRUC
#define TRUC
 
template <typename T>
class Line;
 
template <typename T>
class Vector
{
    public :
    //defs des méthodes de Vector, utilisant entre autre des paramètres de type const Line<T>&
};
 
template <typename T>
class Point
{
    public :
    //idem -> utilise des const Line<t>&
};
 
template <typename T>
class Line
{
    public :
    //méthodes de Line
 
   Vector<T> vector;
   Point<T> point;    //attributs publics
};
 
//et ici, toutes les méthodes et surcharges d'opérateurs
//sachant que celles de Vector utilisent celles de Line
//celles de Point utilisent Vector et Line
//celles de Line utilisent Vector et Point
Voilà, je vois pas comment séparer le tout en mettant comme d'habitude, une classe dans un fichier ....
Y-a-t-il une méthode pour organiser ses template ?

PS : j'ai déjà séparé code source et définition en utilisant l'astuce du fichier .tpp (lien), et en metant #include "Vector.tpp" à la fin de la définition de Vector,
mais ça ne change pas grand chose au problème ....