Les template

Signaler
Messages postés
3
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
14 août 2005
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Bonjour,

peut on se servir d'un struct en temps que type d'un template !

car avec le template que j'ai fait, au moment de l'integration dans mon programme, Borland C++Builder 6 me met une erreur.

il me dit :
'pointeur' n'est pas un membre de 'libTab<HWND_space>'

dans ce cas ls struct est HWND_space et est declare comme suit :
struct HWND_space
{
int pointeur;
int size;
};

voila, en esperant des reponse, merci !!

***********************************************
Si le FlyFucking est un art, alors je suis un artiste !
***********************************************

3 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
je pense que oui,je me rappelle plus qd si je l'ai deja fait

tu l'utilise pour une fonction, une methode, une classe?

montre un peu plus de code, genre la ou tu defini le code generique
c'est peut etre ton truc generique qui peut pas gere cette struc???
Messages postés
3
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
14 août 2005

voici le fichier cpp :
-------------------------------
//---------------------------------------------------------------------------
#include "Tab.h"
//---------------------------------------------------------------------------
template < class T >
lib_Tab< T >::lib_Tab()
{
tab = new T[1]; size 0; //size> taille de depart
count=0;
}

template < class T >
lib_Tab< T >::lib_Tab(int taille)
{
tab = new T[taille]; size taille; //size> taille de depart
count=0;
}

template < class T >
lib_Tab< T >::~lib_Tab()
{
delete[] tab;
}

template < class T >
T lib_Tab< T >::GetValue(int index)
{
if (index<0 || index>=count)
return 0;
return tab[index];
}

template < class T >
void lib_Tab< T >::addValue(T *value)
{ if (count>=size)
{
int* nt = new int[count+1];
for (int i=0;i<count;i++)
nt[i]=tab[i];
delete[]tab;
tab = nt;
delete nt;

}
tab[count++]=value;
}

template < class T >
int lib_Tab< T >::DelValue(int index)
{ if (index<0 || index>=count)
return 0;
for (int i=index;i<=count;i++)
{ tab[i] = tab[i+1]; }
count--;
return count;
}

template < class T >
int lib_Tab< T >::InsertValue(int index,T *value)
{ if (index<0 || index>=count)
return 0;
if (count>=size)
{
T* nt = new T[count+1];
for (int i=0;i<count;i++)
nt[i]=tab[i];
delete[]tab;
tab = nt;
delete[]nt;
}
for (int i=count;i>=index;i--)
{ tab[i+1] = tab[i]; }
tab[index] = value;
count++;
return count;
}

template < class T >
int lib_Tab< T >::Value(int index,T *value)
{ if (index<0 || index>=count)
return 0;
tab[index] = value;
return count;
}

template < class T >
void lib_Tab< T >::Clear()
{ T* nt = new T[size];
delete[]tab;
tab = nt;
count = 0;
}
----------------------------
voici le fichier h :
----------------------------
template < class T >
class lib_Tab
{
public:
lib_Tab();
lib_Tab(int taille);
virtual ~lib_Tab();

lib_Tab& operator[ ] (int i) { return tab[i]; }

T GetValue(int index);
int DelValue(int index);
int InsertValue(int index,T *value);
int Value(int index,T *value);

void addValue(T *value);

void Clear(); //initialise le tab et count=0

int count; //Le nombre de cases utilisées

private:
T* tab; //Le tableau d'entiers

int size; //La taille du tableau

};
-----------------------------
voila, j'ai peut etre fait d'innombrables erreurs, car je ne maitise pas bien le c++ .
cette classe etait a l'origine une classe entier, qui a fonctionne, depuis je l'ai modifier en template a ce ne marche ni avec des struct, ni avec des types c++ standard.
Le compilateur me met des erreur de liens non resolues.

voila !

en esperant de vives explications , merci !!

*****************************************************
Si le FlyFucking est un art, alors je suis un artiste !
*****************************************************
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
pour l'utilisation des template c bon, seulement l'erreur vient d'ailleur, montre donc sur qu'elle fonction est utiliser la struct HWND_space