Souci pour la réécriture en C++/CLI d'une classe avec operator et constructor par copie
bonjour
je transpose des classes écrites en borland C++ (du C++ en gros mais à la borland :lol:)..
j'ai remarqué que le mot const ca posait des soucis; ai je raison ?
avant j'avais :
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
class CToto
{
public
CToto(){}
CToto(const CToto& original)
{
m_Mat = original.GetMat();
}
private:
AnsiString m_Mat;
public:
void SetMat(const AnsiString& Str)
{
m_Mat = Str;
}
const AnsiString& GetMat() const
{
return m_Mat;
}
operator const AnsiString& () const
{
return m_Mat;
}
CToto& operator =(const AnsiString& Mat)
{
m_Mat = Mat;
return *this;
}
CToto& operator=(const CToto& original)
{
m_Mat = original.GetMat();
return *this;
}
} |
Apres
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| ref class CToto
{
public :
CToto(){};
CToto(CToto% original)
{
m_Mat = original.Mat;
}
CTor par copie de la FAQ
CToto::CToto(const CToto^ original) {m_Mat = original->Mat;}
ne compile pas ....
protected:
String^ m_Mat;
public:
property String^ Mat
{
String^ get() {return m_Mat;}
void set(String^ value){m_Mat = value;}
}
est ce que j'ajoute le % pour coller à mon code d'avant ?
operator String^% ()
{
return m_Mat;
}
CToto% operator =(String^% Mat)
{
m_Mat = Mat;
return *this;
}
CToto% operator =(CToto% original)
{
m_Mat = original.Mat;
return *this;
}
} |
je ne comprend pas que le CTor par copie ne compile pas comme indiqué dans la FAQ...pour lesoperator = ou autre, je n'ai pas trouvé de choses écrite la dessus... on se colle au natif en virant le const et en remplacant juste la référence par % ?
merci de vos conseils avisés..