Bonjour à tous.

Et voilà, j'ai encore un problème de référence indéfinie dans un mon applic. Je ne sais pas d'où elle vient, et c'est pour cela que je me tourne vers des personnes qui n'ont pas encore vu le code des semaines durant du matin au soir, peut être que vous trouverez l'erreur en 2 minutes, parce que moi, plus moyen, je vois des erreurs où il n'y en a pas.

L'erreur que je reçois lors de la compilation est la suivante:

./objs/main.o: dans la fonction « main »:
main.cxx: (.text+0xf3f): référence indéfinie vers « Vecteur<membrepersonnel*>::Vecteur(int)»
collect2: ld returned 1 exit status
make: *** [all] Erreur 1
Je commencerais donc par le :
- main.cxx

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// déclaration du vecteur de membre de personnel
Vecteur<membrepersonnel *> VMP(10);
 
// déclaration et init du vecteur d'occupation
int vOQPApp[20];
for( int i = 0; i < 20; i++)
{
	vOQPApp[i] = 0;
}
 
// ajout d'une personne dans le vecteur ( avec imp un compteur de personne )
VMP[imp] = new membrepersonnel();
VMP[imp]->insert();
imp++;
Voici maintenant ma classe vecteur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
#ifdef ...
#...
 
template <class T> class Vecteur
{
private:
	T *Data;
	int nbrElem;
	int *Index;
public:
	// constructeur
	// d'initialisation
	Vecteur(int n = 20 );
 
	// destructeur
	~Vecteur(void)
	{
		delete[] Data;
	}
 
	// methodes d'acces au variables et de construction d'index
	T& operator[](int i){ return *(Data+i);};
	int placelibre();
	void setindex(int N, int NV){	Index[N] = NV; }
	int getindex(int N){	return Index[N];	}
 
};
#endif
La définissions des méthodes de cette classe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
#include"Vecteur.h"
 
template <class T>
Vecteur<T>::Vecteur( int n )
{
	Data = new T[n];
	nbrElem = n;
 
	Index = new int[n];
	for( int i = 0; i < n; i++)
		Index[i] = 0;
}
 
template <class T>
int Vecteur<T>::placelibre()
{
	int i;
	for( i = 0; i<nbrElem && Index[i] != 0; i++);
 
	if( i >= nbrElem )
		i = -1;
	return i;
}
 
template class Vecteur<piecemusee>;
template class Vecteur<piecemuseeart>;
template class Vecteur<int>;
template class Vecteur<membrepersonnel>;
Voilà, je pense que je n'ai rien oublier de mentionner plus haut. Si je comprend bien l'erreur qu'il me donne, c'est qu'il ne trouve pas la méthode me permettant de construire un vecteur de pointeur de "membrepersonnel" en lui assignant une taille fixe, non?

Quelqu'un aurait-il une idée à ce sujet? Merci d'avance pour tout les petits trucs et astuces et solutions probable que vous pourrez me fournir.

Sur ce, bonne journée, bon travaille pour ceux qui ne sont pas en vacances, et bonne vacances pour les autres.

Encore merci,

Richard_sraing

ps.: en relisant le message, je pense avoir trouver d'où vient l'erreur, mais je ne sais pas comment y remédier. Je pense qu'elle se situe au niveau du constructeur de la classe Vecteur, est ce que je ne dois pas faire un truc du genre:

Vecteur<type>(int n = 20 );
??