Bonsoir,

voilà j'essaie d'implementer une classe String, pour débuter je veux juste surdéfinir l'opérateur = afin de pouvoir faire :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
String str1 ("bb");
String str2;
 
str2 = str1;

J'ai donc pondu le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
#include <iostream>
 
using namespace std;
 
class String
{
   private :
 
      char* m_string;
 
   public :
 
      String (char *string = "")
      {
         m_string = new char[strlen (string) + 1];
         strcpy (m_string, string);
      }
 
      ~String ()
      {
         delete m_string, m_string = NULL;
      }
 
      String & operator= (const String &right)
      {
         delete m_string, m_string = NULL;
 
         String (right.m_string);
 
         return *this;
      }
 
      void display ()
      {
         cout << m_string;
      }
};
 
int main ()
{
   String str1;
   String str2 ("Salut jonjon");
 
   str1 = str2;
 
   str1.display ();
 
   return EXIT_SUCCESS;
}
dans la fonction operator= j'essaie d'appeler le constructeur de l'objet pour pouvoir changer sa valeur, mais ça ne marche pas.
j'aimerais éviter de faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
      String & operator= (const String &right)
      {
         delete m_string, m_string = NULL;
 
         m_string = new char[strlen (right.m_string) + 1];
         strcpy (m_string, right.m_string);
 
         return *this;
      }
merci