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

  FORUM HardWare.fr
  Programmation

  Problème C++ => template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème C++ => template

n°110917
Deckards
Posté le 12-03-2002 à 11:53:35  profilanswer
 

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 :)


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
mood
Publicité
Posté le 12-03-2002 à 11:53:35  profilanswer
 

n°110919
Krueger
tout salaire demande dutravail
Posté le 12-03-2002 à 11:58:02  profilanswer
 

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]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°110935
Krueger
tout salaire demande dutravail
Posté le 12-03-2002 à 12:06:55  profilanswer
 

Pff, bien sûr, c'était pas une classe qu'il avait lui-même définie. Quel idiot à répondre trop rapidement...

n°110942
Deckards
Posté le 12-03-2002 à 12:17:53  profilanswer
 

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?


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°111053
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 12-03-2002 à 15:21:36  profilanswer
 

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.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°111125
Deckards
Posté le 12-03-2002 à 16:52:29  profilanswer
 

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 );
  ...
};


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°111146
wpk
Posté le 12-03-2002 à 17:09:31  profilanswer
 

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)

n°111275
Deckards
Posté le 12-03-2002 à 19:33:48  profilanswer
 

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 :)


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°111280
ayachi
Posté le 12-03-2002 à 19:44:47  profilanswer
 

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.

n°111295
bobuse
Posté le 12-03-2002 à 20:04:40  profilanswer
 

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

mood
Publicité
Posté le 12-03-2002 à 20:04:40  profilanswer
 

n°111299
Deckards
Posté le 12-03-2002 à 20:17:31  profilanswer
 

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 !!


---------------
Une nouvelle vie vous attend sur les mondes colonisés.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Problème C++ => template

 

Sujets relatifs
[PHP] problème odbc num rows[MFC] Problème de répertoire courant
[PHP] Probleme quand c'est sur une autre page ?Problème HTACCESS
J'ai un problème lotus scriptSELECT champs2 FROM tbl WHERE champs1='MAX(champs1)'... problème !
[HTML JAVASCRIPT] Problème de cookiesProbleme C++
[PHP/MySQL]Problème a propos de l'auto increment ....[HTML + PDF] Probleme pour afficher un doc PDF par un site web
Plus de sujets relatifs à : Problème C++ => template


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR