XCODE Console C++ faire ses propres templates?

chemical_seb

Membre confirmé
20 Décembre 2006
17
0
43
slt,
bon j ai depuis quelques jours mon macbook ! franchement macosx , les softs develloppés pour , c est fort , et j aime vrmt bien xcode , c est clair , c est agreable a utiliser! je veux plus autre chose!

donc je develloppe une applic en C++ ( mon projet est un C++ tool), des classes qui representent des employes etc...

je dois creer un vecteur en utilisant le principe template...
donc je pourrai declarer ds mon main par ex., Vecteur<int>(3) ou encore Vecteur<employe>(3)...

je n ai jamais de C++ sous un ide, ce que je faisais precedement , c est editeur de texte, makefile, compilation sous sunray et ma class template passait...

Vecteur.h
using namespace std;

template <class T> class Vecteur
{
protected :
T *data;
int nbreElem;


public :
Vecteur(int n); // CONSTRUCTEUR

~Vecteur() { delete data; }

int getNbr () { return nbrElem;}
T& getDataRef() {return *data;}

T& operator[] (int i) { return *(data+i); }

};

Vecteur.cxx
#include "Vecteur.h"

template <class T> Vecteur <T>:: Vecteur(int n)
{
data=new T[n];
nbreElem=n;
}

main
#include <iostream>
#include "personne/personne.h"
#include "template/vecteur.h"

int main (int argc, char * const argv[]) {
// insert code here...
std::cout << "Hello, World!\n";

Vecteur<int> test(3);

return 0;
}

la compilation passe sans problemes mais à l'execution ... voici ce que j'ai..
[Session started at 2007-02-20 15:38:58 +0100.]
Hello, World!
ZeroLink: unknown symbol '__ZN7VecteurIiEC1Ei'

inpres_museum has exited due to signal 6 (SIGABRT).

en esperant que quelqu un pourra m'aider... merci.
 
1/ Dans la stl, tu as la classe vector :siffle: Pas la peine de réinventer la roue. :D
2/ Sur ta cible, "Get info" > "Build", décoche "Zerolink".
 
j'ai bien desactiver l'option zeroling ds 'target' ...

a present la compilation donne cette erreur:
Building target “inpres_museum” of project “inpres_museum” with configuration “Debug” — (1 error)
cd /Users/seb/inpres_museum
/usr/bin/g++-4.0 -o /Users/seb/inpres_museum/build/Debug/inpres_museum -L/Users/seb/inpres_museum/build/Debug -F/Users/seb/inpres_museum/build/Debug -filelist /Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/inpres_museum.LinkFileList -arch i386 -Wl,-Y,1455 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
/usr/bin/ld: Undefined symbols:
Vecteur<int>::Vecteur(int)
/Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/main.o reference to undefined Vecteur<int>::Vecteur(int)
collect2: ld returned 1 exit status
/usr/bin/ld: Undefined symbols:
Vecteur<int>::Vecteur(int)
/Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/main.o reference to undefined Vecteur<int>::Vecteur(int)
collect2: ld returned 1 exit status
Build failed (1 error)



j'ai l'impression qu'il y a un probleme au niveau de mon constructeur...


sinon, j'ai trouve ce tuto http://www.developpez.biz/download/stl.pdf sur cette fameuse stl !!! j'y ai jete un oeil et ca me fait penser au package de java avec tt ce bon code genrique et pret a l'emploie !!! mais je ne sais pas si je peux utiliser cette stl ds le cadre de mon projet , car les profs n'en ont jamais parlé de cette stl , j'imagine qu'ils veulent d'abord nous faire comprendre les rouages de la roue c'est pourquoi j'aimerais utiliser la classe que j ai ecrite ...
 
j'ai bien desactiver l'option zeroling ds 'target' ...

a present la compilation donne cette erreur:
Building target “inpres_museum” of project “inpres_museum” with configuration “Debug” — (1 error)
cd /Users/seb/inpres_museum
/usr/bin/g++-4.0 -o /Users/seb/inpres_museum/build/Debug/inpres_museum -L/Users/seb/inpres_museum/build/Debug -F/Users/seb/inpres_museum/build/Debug -filelist /Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/inpres_museum.LinkFileList -arch i386 -Wl,-Y,1455 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
/usr/bin/ld: Undefined symbols:
Vecteur<int>::Vecteur(int)
/Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/main.o reference to undefined Vecteur<int>::Vecteur(int)
collect2: ld returned 1 exit status
/usr/bin/ld: Undefined symbols:
Vecteur<int>::Vecteur(int)
/Users/seb/inpres_museum/build/inpres_museum.build/Debug/inpres_museum.build/Objects-normal/i386/main.o reference to undefined Vecteur<int>::Vecteur(int)
collect2: ld returned 1 exit status
Build failed (1 error)



j'ai l'impression qu'il y a un probleme au niveau de mon constructeur...
Je sais que sous Solaris on mettait tout le code dans le .h. Je ne sais plus sous Mac OSX, tu peux essayer ?
mais je ne sais pas si je peux utiliser cette stl ds le cadre de mon projet , car les profs n'en ont jamais parlé de cette stl
Essaye tu verras bien :D
 
sous sunos, ma class template passe avec un fichier.h et un .cxx alors j ai esseye sous xcode de tout mettre ds un .h et maintenant ca compile et ca marche bien !!!!


merci ntx pour ton aide et merci aussi pour STL :D