begin process at 2012 05 29 01:54:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

comment créer une instance d'un templates


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment créer une instance d'un templates

samedi 11 juin 2005 à 11:49:43 | comment créer une instance d'un templates

neodelphi

Membre Club
Bonjour, je suis en train de découvrir les templates en c++ et j'ai donc essayé de coder une classe CArray. Pour ce qui est des déclarations il ne semble pas y avoir de problème, le compilateur ne me cri pas dessus. J'ai donc ensuite tenté de créer une instance de ce template, mais la, il y a un problème lors de l'édition de liens :

undefined reference to `CArray<CParticule>::CArray[in-charge]()


template <class T>
class CArray
{
    private:
        T *elements;
        int elements_count;
    public:
        CArray(void);
};

CArray<CParticule> *pparticules;

pparticules = new CArray<CParticule>(); // C'est cette ligne qui ne passe pas !


J'ai essayé de ne pas spécifié le type de template lors de la création, ou de remplacer CParticule par int mais il y a toujours des erreurs.

Merci pour vos réponse et bonne journée

neodelphi
samedi 11 juin 2005 à 12:02:23 | Re : comment créer une instance d'un templates

ctx_man

"pparticules = new CArray<CParticule>(); // C'est cette ligne qui ne passe pas !"
Je crois que ce qui est faux c'est les ( ), enleve les. (Je ne connais rien aux template mais je n'ai encore jamais vu un new faisant reference a une fonction et non a un type de donné)

Le travail c'est la santé, ne rien faire c'est la préservé !!!
samedi 11 juin 2005 à 12:48:05 | Re : comment créer une instance d'un templates

mezaya

Réponse acceptée !
le new est bon il fait appel au constructeur par défault. pour les templates es ce que tu fait une compilation séparé ?

J'ai eu le même probleme la compilation marche bien mais au linkage il plante. le seul moyen que j'ai trouver et de compiler en incluant ton template. je m'explique. tu déclare ton CArray<CParticule> dans ton main.cpp et ta fonction est définis dans ton Array.cpp. Donc dans ton main.cpp tu ajoute #include "Array.cpp".

c'est pas tres propre et il n y a pas de compilation séparé mais c'est la seul astuce que j'ai trouvé.

Ou alors mais tout ton code de la classe CArray dans le .h ce qui revient au même puisseque tu vas include le .h

Voili,Voilou
samedi 11 juin 2005 à 14:59:55 | Re : comment créer une instance d'un templates

neodelphi

Membre Club
En effet je fait une compilation séparée avec un makefile, mais il n'est pas question de mettre mon code dans le meme fichier étant donner que ce template va me servir pour plusieurs classes...

neodelphi
samedi 11 juin 2005 à 17:11:26 | Re : comment créer une instance d'un templates

mezaya

Ce que je veux dire c'est que tu doit include ton fichier .cpp dans ton .h pour pour que l'instanciation de ta classe et son code soit dans la même passe de compilaion. c'est a dire que le compilateur devra compiler ta classe CArray pour chaque instanciation de type différent. C'est la seul méthode que j'ai trouvé. il y en a surement d'autre car les codes de base sont bien fait avec des templates.

Il y a peut être une histoire de compilateur aussi...

Voili,Voilou


Cette discussion est classée dans : créer, instance, template, carray, templates


Répondre à ce message

Sujets en rapport avec ce message

Erreur de link en utilisant les templates [ par Wett ] Voila j'utilise VC++ 6 et j'ai créé une classe templates toute simple (en fait c une liste chainée :p), de la formedans le .h:template class ChainList Singleton et héritage [ par Dany82 ] Voila mon probleme:J'utilise le template:template class singleton{protected: // Constructor/Destructor singleton( ) { } // Supprime l instance de la c Erreur avec les templates [ par manta7 ] Bonjour, je débute en c++ et j'ai une erreur avec les templates :J'ai une classe Fouille :class Fouille {public:  ...  template TYPE get(string);},Ma COM serveur clients [ par PACAL7585 ] Bonjour à tous, Je viens de créer un COM avec ATL ca marche bien. ce COM doit me permettre de créer un fichier log pour plusieurs applications. mon Difference entre CArray et CList [ par langedechu ] Salut,Ben ma question est dans le titre : quelle est la différence entre ARRAY et LISTE ?Et une autre petite question sur les templates car ça me pren Reutilisation de templates dans une méthode de class [ par mondrone ] Bonsoir, voilà mon problème : je tente de faire une class, contenant un std::list, mais cette classe elle même est en template. Pour certaines raiso fonction templates amies [ par littlefl ] Ma question peu paraître simple (et peut-être qu'elle l'est) mais je n'arrive pas à déclarer une fonction template amie d'une classe. La raison, c'ets gestion de fichier en C++ [ par croftlou ] Bonjour je suis debutant en C++, je desire faire un petit projet en C+++, pour gere des des fichiers en lecture et en ecriture.Pour cela ej voudrai cr créer un espion! [ par bapt1080 ] bonjour a tous programmeur et programmeuse de toute contée.je suis en iut info et je suis en stage donc fini les projets et j'ai le temps de devellopp Creation de dll [ par dindin2000 ] Bonjour à tous, Depuis déjà plusieurs semaines, j'essais de créer une dll sous visual studio6 (en cpp), et de l'utiliser sous builder C++5. Mhum, je v


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales