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.
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 CArray<CCoupJoue, CCoupJoue> m_tabCoupsJoues;
A ce niveau, je test et tout fonctionne (compilation, �dition des liens et ex�cution) correctement, notamment le constructeur de recopie.
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"); }
La classe CModeleDeCarteDeParcours poss�de un tableau d'objets de la classe CTrou.
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 CArray<CTrou, CTrou> m_tabTrous;
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
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"); }
Je pr�cise que pour aucune des 3 classes je n'ai impl�ment� l'op�rateur =.
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)'
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.
Partager