Surcharge operator + c++

Fermé
jujurochedu42 Messages postés 18 Date d'inscription samedi 7 novembre 2009 Statut Membre Dernière intervention 13 janvier 2017 - 31 oct. 2010 à 18:49
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 1 nov. 2010 à 00:03
Bonjour,

je dois concatener deux chaines de caractères sans utiliser de strings....

J'ai donc surcharger mon operateur + mais je n'arrives pas à faire fonctionner.

CChaine CChaine::operator+(const char* message)
{
int taillemessage;
int tailletotal;
taillemessage=strlen(message);
tailletotal=m_size+taillemessage;
char*chn=new char[tailletotal+1];
strcpy(chn,message);
CChaine Chainecomplete=chn;
return chn;

}

1 réponse

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
1 nov. 2010 à 00:03
En supposant que la classe 'CChaine' à comme données membre au moins 'm_size' (longueur de la chaîne sans le caractère terminal) et 'm_chn' (qui contient la chaîne avec le caractère terminal), j'aurais ainsi écrit la surcharge de l'opérateur '+':
CChaine operator+(const char* chn)
{
  CChaine newChn;
  newChn.m_chn = new char[(newChn.m_size = m_size + strlen(chn)) + 1];
  strcpy(newChn.m_chn, m_chn);
  strcat(newChn.m_chn, chn);
  return(newChn);
}
Etant entendu que pour éviter tout problème, j'aurais au moins déclaré un constructeur et un destructeur:
CChaine()
{
  m_size = 0;
  m_chn = new char[1];
  m_chn[0] = 0;
}
~CChaine()
{
  delete [] m_chn;
}
Bonne continuation.
0