Salut tout le monde !

Avant de poser mes questions, voici un peu d'informations sur le contexte.

Je suis en train de d�velopper une application qui se compose de trois classes :
* classe CCoupJoue
* classe CTrou
* classe CModeleDeCarteDeParcours

La classe CCoupJoue ne poss�de rien de sp�cial, juste quelques attributs.

La classe CTrou poss�de un tableau d'objets de la classe CCoupJoue.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
CArray<CCoupJoue, CCoupJoue> m_tabCoupsJoues;
Le constructeur de recopie de la classe CTrou effectue les op�rations suivantes :
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
 
CTrou::CTrou(const CTrou &unTrou)
{
	this->m_pAfficheur	=	unTrou.m_pAfficheur;
	this->m_nPar		=	unTrou.m_nPar;
	this->m_nDistance	=	unTrou.m_nDistance;
	this->m_nCoupsRecus	=	unTrou.m_nCoupsRecus;
 
	this->m_tabCoupsJoues.SetSize(unTrou.m_tabCoupsJoues.GetSize());
	for(int nIndex=0; nIndex<this->m_tabCoupsJoues.GetSize(); nIndex++)
		this->m_tabCoupsJoues.SetAt(nIndex, unTrou.m_tabCoupsJoues.GetAt(nIndex));
 
	if( this->m_pAfficheur )
		this->m_pAfficheur->Afficher("Appel du constructeur de recopie de la classe CTrou");
 
}
A ce niveau, je test et tout fonctionne (compilation, �dition des liens et ex�cution) correctement, notamment le constructeur de recopie.

La classe CModeleDeCarteDeParcours poss�de un tableau d'objets de la classe CTrou.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
CArray<CTrou, CTrou> m_tabTrous;
Le constructeur de recopie de la classe CModeleDeCarteDeParcours r�alise les op�ration suivantes :
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
 
CModeleDeCarteDeParcours::CModeleDeCarteDeParcours(const CModeleDeCarteDeParcours &unParcours)
{
	this->m_pAfficheur			=	unParcours.m_pAfficheur;
	this->m_szNomDuModele		=	unParcours.m_szNomDuModele;
	this->m_szNomDuGolf			=	unParcours.m_szNomDuGolf;
	this->m_szAdresseNumero		=	unParcours.m_szAdresseNumero;
	this->m_szAdresseRue		=	unParcours.m_szAdresseRue;
	this->m_szAdresseCodePostal	=	unParcours.m_szAdresseCodePostal;
	this->m_szAdresseVille		=	unParcours.m_szAdresseVille;
	this->m_szAdresseTelephone	=	unParcours.m_szAdresseTelephone;
 
	this->m_tabTrous.SetSize(unParcours.m_tabTrous.GetSize());
	for(int nIndex=0; nIndex<this->m_tabTrous.GetSize(); nIndex++)
		this->m_tabTrous.SetAt(nIndex, unParcours.m_tabTrous.GetAt(nIndex));
 
	if( this->m_pAfficheur )
		this->m_pAfficheur->Afficher("Appel du constructeur de recopie de la classe CModeleDeCarteDeParcours");
}
A ce niveau je test et j'obtiens l'erreur de compilation suivante :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
 
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(259) : error C2582: 'CTrou' : 'operator =' function is unavailable
        c:\program files\microsoft visual studio\vc98\include\xstring(583) : while compiling class-template member function 'void __thiscall CArray<class CTrou,class CTrou>::SetAt(int,class CTrou)'
Je pr�cise que pour aucune des 3 classes je n'ai impl�ment� l'op�rateur =.

Ce qui m'am�ne � mes questions :
(1) Pourquoi n'ai je pas la m�me erreur de compilation dans le constructeur de recopie de la classe CTrou ?
(2) Suis je oblig� d'impl�menter l'op�rateur = pour r�soudre mon probl�me ou s'agit il d'une autre erreur ?
(3) Quel est le r�le de l'op�rateur = ? Comment l'impl�menter ?

D'avance merci pour votre aide.