Surcharge operator + c++
jujurochedu42
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
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;
}
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;
}
A voir également:
- Surcharge operator + c++
- Surcharge antenne - Forum TNT / Satellite / Réception
- Surcharge lnb - Forum TNT / Satellite / Réception
- Court circuit LNB - Forum TNT / Satellite / Réception
- Operator openai - Accueil - Intelligence artificielle
- Surcharge du circuit LNB - Forum TNT / Satellite / Réception
1 réponse
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.