FlyFucker
Messages postés3Date d'inscriptionsamedi 29 novembre 2003StatutMembreDernière intervention14 août 2005
-
6 déc. 2003 à 01:15
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
6 déc. 2003 à 18:27
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 !
***********************************************
FlyFucker
Messages postés3Date d'inscriptionsamedi 29 novembre 2003StatutMembreDernière intervention14 août 2005 6 déc. 2003 à 17:57
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 !
*****************************************************