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 :
dans la fonction operator= j'essaie d'appeler le constructeur de l'objet pour pouvoir changer sa valeur, mais ça ne marche pas.
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; }
j'aimerais éviter de faire
merci
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; }
Partager