Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5829 connectés 

 


Dernière réponse
Sujet : Problème C++ => template
Deckards Aaaah voila !!!
C'est la solution qu'il me fallait !!!
Il faut inclure le fichier .cpp quand on en a besoin et pas le fichier .h !
J'ai testé, ca a l'air de marcher séparé maintenant :) Merci !!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Deckards Aaaah voila !!!
C'est la solution qu'il me fallait !!!
Il faut inclure le fichier .cpp quand on en a besoin et pas le fichier .h !
J'ai testé, ca a l'air de marcher séparé maintenant :) Merci !!
bobuse

ayachi a écrit a écrit :

ben moi, je sépare quand même en h et cpp.
je mets les declarations dans le h et le code dans un cpp.
puis si un code a besoin de mon template je fais l'include
du cpp.  




Je fais pareil aussi

ayachi ben moi, je sépare quand même en h et cpp.
je mets les declarations dans le h et le code dans un cpp.
puis si un code a besoin de mon template je fais l'include
du cpp.
Deckards Ok, je fais comme ca. Merci :)
Sur un livre, ils disaient qu'il était possible de séparer mais bon on va pas se prendre la tête :)
wpk mets la declaration et l'implementation dans le .h
 
si tu separes ca en .h .cpp, le compilo va rien comprendre (cf 1er reply de Krueger)
Deckards Voila la déclaration:
template <class T>
class CList
{
protected:
  int           m_iSize;
  CListNode<T> *m_pHead;
  CListNode<T> *m_pTail;
 
public:
  CList( void );
  ~CList( void );
  ...
};
Tetragrammaton IHVH Donne la déclaration de ta CList sinon on ne pourra jamais t'aider.
 
Sinon, en MFC, il y a déjà une classe qui s'appelle CList<T,T>, d'où ma confusion.
Deckards Pourquoi mettre CList<int,int> ? Je n'ai qu'un type a spécifier.
J'ai quand meme essayer et le compilo dit ; too much arguments.
 
En attendant j'ai regroupé déclarations et définitions car là ca marchait. Y a pas moyen de les séparer?
Krueger Pff, bien sûr, c'était pas une classe qu'il avait lui-même définie. Quel idiot à répondre trop rapidement...
Krueger Mets les définitions de ta classe template dans son en-tête. D'après mes souvenirs beaucoup de compilateurs n'aiment pas les définitions de classes templates en dissociant en-tête et définition. Pour résoudre ça il leur faut tout définir au même endroit.  
 
Si quelqu'un a mieux je prends aussi. :hello:

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]

Deckards J'ai créé une classe template CList avec ses déclarations dans un fichier .h et ses définitions dans un fichier .cpp.
Lorsque dans une autre classe je veux un membre ayant pour type CList<int> par exemple j'écris dans sa déclaration:
 
class CMaclasse
{
private:
  CList<int> m_membre;
public:
  CMaclasse();
  ~CMaclasse();
};
 
Dans le fichier .cpp correponsdant a cette nouvelle classe, si je fais :
CMaclasse::CMaclasse()
{
  m_membre = new CList<int>;
}
 
J'ai une erreur de link:  
error LNK2001: unresolved external symbol "public: __thiscall CList<int>::CList<int>(void)"
 
En fait, j'ai l'impression que les définitions de CList ne sont pas prises en compte...
 
Si vous comprenez ce je veux dire et que vous pouvez m'aider merci :)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)