Bonjour, j'essaie de programmer avec Builder6 (Borland) mes 1ers patrons de classe. Malgre bien avoir suivit mon tutorial le compilateur refuse la compilation suivante :
1 - création du fichier de définition du patron
#ifndef DEFPILE_H
#define DEFPILE_H#include <iostream>using namespace std;
export template <class T> class Pile
{
int n_elem;
T *adresse;
public :
Pile();
Pile(int, T *);
~Pile();
void affiche();
};
template <class T> Pile<T> :: Pile()
{
n_elem = 0;
adresse = NULL;
}
template <class T> Pile<T> :: Pile(int n, T *adr)
{
adresse = new T[n_elem=n];
for(int i=0; i<n_elem; i++)
adresse[i] = adr[i];
}
template <class T> Pile<T> :: ~Pile()
{
delete [] adresse;
}
template <class T> void Pile<T> :: affiche()
{
for(int i=0; i<n_elem; i++)
cout << adresse[i] << endl;
cout << endl;
}
#endifj'utilise le mot cle export pour le rendre accessible par une autre source
2- je suis les conseils du tutorial et créer un entete de déclaration
#ifndef DECPILE_H
#define DECPILE_H#include "defpile.h"
template <class T> Pile<T>{.............................................................................. int n_elem;
T *adresse;
Pile();
Pile(T*);
~Pile();
void affiche;
};
#endif3- et essaye de l'utiliser dans un main()
//---------------------------------------------------------------------------
#include "decpile.h"
//---------------------------------------------------------------------------
int main()
{
}
//---------------------------------------------------------------------------
mais là : ERREUR
si j'inclut le fichier de "déclaration" il me met :
"déclaration terminer incorrectement" et pointe sur la ligne verte de l'entête "decpile.h"
si j'inclut l'entête de "definition" "defpile.h" a la place de "decpile.h" dans la source du main, l'erreur se transforme en avertissement... et met :
"impossible de créer l'entete precompiler : entete incomplet
et si j'inverse l'ordre de prcompilation en incluant la declaration dans la definition et dans la source :
"decpile.h" qui est inclut dans "defpile.h" et dans l'unite source
j'ai une nouvelle erreur : "les modèles doivent etre des classes ou des fonctions, erreur de syntaxe de declaration"
et point sur la ligne bleue...
que faire ? car depuis hier je tourne en rond


