Je suis confront� � un probl�me qui me laisse perplexe: J'ai une classe MaClasse que je peux �videmment copier tr�s classiquement avec un =
J'ai surcharg� l'op�rateur = pour pouvoir l'initialiser avec une structure. Pour moi, le prototype �tant diff�rent, �a devrait juste �tre une m�thode polymorphe et ne pas affecter l'op�rateur = par d�faut:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 TMaClasse MaClasse1; TMaClasse MaClasse2; MaClasse1.X = 1; MaClasse1.Y = 2; MaClasse2 = MaClasse1;
le .h
le .cpp
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 //--------------------------------------------------------------------------- typedef struct { short x; short y; } MASTRUCTURE; //--------------------------------------------------------------------------- class TMaClasse { private: int FX; int FY; public: __fastcall TMaClasse(void); __property int X = {read = FX, write = FX}; __property int Y = {read = FY, write = FY}; const TMaClasse &operator = (const MASTRUCTURE &MaStructure); }; //---------------------------------------------------------------------------
Dans ce cas, j'ai une erreur E2328 les classes avec des propri�t�s ne peuvent pas �tre copi�es par valeur que je ne comprends pas. Faut-il dans ce cas que je red�finisse aussi l'op�rateur = par d�faut ? Pourquoi le fait de red�finir le = avec un prototype diff�rent affecte le = par d�faut ?
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
30 //--------------------------------------------------------------------------- __fastcall TMaClasse::TMaClasse() { FX = 0; FY = 0; } //--------------------------------------------------------------------------- const TMaClasse &TMaClasse::operator = (const MASTRUCTURE &MaStructure) { FX = MaStructure.x; FY = MaStructure.y; return *this; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TMaClasse MaClasse1; TMaClasse MaClasse2; MaClasse1.X = 1; MaClasse1.Y = 2; MaClasse2 = MaClasse1; // <- Erreur MASTRUCTURE MaStructure; MaStructure.x = 3; MaStructure.y = 4; MaClasse2 = MaStructure; }
Partager