Surcharge operator + c++

jujurochedu42 Messages postés 22 Statut Membre -  
loupius Messages postés 789 Statut Membre -
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

  1. loupius Messages postés 789 Statut Membre 148
     
    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