Bonjour à tous !
Je suis actuellement le TP de M@teo pour créer la classe ZString. Je suis rendu à la fin, j'ai surchargé les opérateurs + et << mais je recontre un problème quand je combine les deux. Je vous poste mon code :
ZString ZString::operator+(const ZString &chaine)
{
long nv_longueur = m_longueur + chaine.m_longueur;
char *nv_chaine = new char[nv_longueur + 1];
for (int i = 0; i < m_longueur; i++)
{
nv_chaine[i] = m_chaine[i];
}
for (int i = m_longueur; i <= nv_longueur; i++)
{
nv_chaine[i] = chaine.m_chaine[i - m_longueur];
}
ZString resultat(nv_chaine);
delete[] nv_chaine;
return resultat;
}
ostream &operator<<(ostream &out, ZString &chaine)
{
out << chaine.get_chaine();
return out;
}
Ces deux surcharges marchent séparément, c'est-à-dire quand je fais :
resultat = chaine1 + chaine2;
ou
cout << chaine1;
En revanche, quand j'essaye de faire ça :
cout << (chaine1 + chaine2) << endl;
J'obtiens de jolies insultes de la part du compilateur :
EDIT: Heuuu en fait, après bidouillage (rajout de const un peu partout...) le problème a été résolu ! Merci quand même à ceux qui ont commencé à chercher
[ZString] Combiner operator<< et operator+
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.