Probleme d'inclusion de fichier (.hpp Vs .cpp)?

ano2345 18 Messages postés dimanche 9 novembre 2008Date d'inscription 22 décembre 2008 Dernière intervention - 22 déc. 2008 à 13:20 - Dernière réponse : cs_exar 287 Messages postés vendredi 5 décembre 2003Date d'inscription 22 avril 2012 Dernière intervention
- 29 déc. 2008 à 11:52
Bonjour a tous,

Je suis en train de developper sous Dev-C++ 4.9.9.2 une classe template MyVector basee sur la classe vector de telle maniere que je puisse y ajouter mes propres operations standards telle que generer un vecteur de moyennes glissantes a partir d'un vecteur initial.
Le fichier MyVector.hpp declare la classe MyVector, le fichier MyVector.cpp definit les fonctions de la classe MyVector, et le fichier TestMyVector.cpp permet de tester l'utilisation de cette classe
J'ai 2 problemes que je n'ai pas si j'utilise une classe non template alors qu'il apparaissent avec la classe template:

1) Directive #include "MyVector.hpp" dans TestMyVector.cpp:
dans le fichier TestMyVector.cpp, j'ai une erreur de linkage quand j'utilise la directive #include "MyVector.hpp" Cette erreur disparait lorsque j'utilise a la place #include "MyVector.cpp" a la place. Dans tous les exemples que j'ai vus jusqu'a present, le fichier qui sert a tester la classe inclut toujours la declaration (.hpp) et non la definition (.cpp) de la classe. Quelqu'un peut-il m'expliquer pourquoi ca ne marche pas quand j'utilise une classe template (encore une fois ca marchait quand la classe n'etait pas template)

2) overloading de l'operateur <<:  
L'overloading de << fonctionnait parfaitement quand la classe n'etait pas template. Mais quand je passe a une classe template, j'obtiens egalement une erreur de linkage.

Je n'ai malheureusement pas reussi a copier les 3 fichiers dans ce mail. Est-ce que quelqu'un aurait malgre tout une idee de la source de ces 2 problemes et pourquoi passer d'une classe non template (contenant un membre vector<float>) a une classe template (contenant un membre template<class T> vector<T>) pose probleme?

Merci d'avance pour votre aide,
Ano
Afficher la suite 

1 réponse

Répondre au sujet
cs_exar 287 Messages postés vendredi 5 décembre 2003Date d'inscription 22 avril 2012 Dernière intervention - 29 déc. 2008 à 11:52
0
Utile
1. Ton implémentation doit être dans le fichier d'interface, à moins que ton compilo ne supporte la clause "export", mais je n'en connais aucun qui le fait...
2. Implémente ton opérateur << dans l'interface de la classe.

Ainsi, ça devrait fonctionner.
Bon courage !
Commenter la réponse de cs_exar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.