Salut � tous,
Je suis tomb� sur un exo , qui va vous paraitre simple, mais que je n'arrive pas a r�soudre pourriez vous m'aidez.
Expliquez pourquoi le code suivant g�n�re une erreur de compilation.
Alors tout d'abord premier pb, pour moi strlen() et strcpy() ne peuvent s'appliquer que sur des chaines de caract�res et pas directement sur leur pointeur!
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 class String { private : char *chaine ; int longueur ; public : String() { chaine = NULL ; longueur = 0 ; } String(const char *st) {chaine = new char [strlen(st)+1 ];longueur = strlen(st) ; strcpy (chaine, st) ; } ~String() { if (chaine) delete chaine ; } }; int main(int argc, char **argv) { String s("abc") ; cout << s ; return(0); }
Deuxi�me probl�me, pour moi donc le pb vient de l� et �galement du cout dans le main, n'aurait il pas fallu rajouter un friend ostream& operator<<(ostream&, const String&).Est ce que je me trompe?
Ensuite,toujours � partir de la classe String, indiquez si le code suivant g�n�re des erreurs de compilation ou sinon que se passe-t-il apr�s l�op�ration s1=s3 (pour s1) si l'op�rateur d'affectation = n'a pas �t� �crit par l'utilisateur ?
Alors pour moi l'op�rateur= n'ayant pas �t� �crit il va donc proc�d� � une copie bit � bit mais les pointeur vont peut �tre poser probl�me.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 int main(int argc, char **argv) { String s1("abc") ; String* s2 = new String(cde) ; String& s3 = *s2 ; s1 = s3 ; delete s2 ; return (0) ; }
Je sais ce que vous all� dire, la solution est de tester mais si le programme comporte une erreur de compile et que je la vois je m'acharne pour rien(en plus j'ai deja essay� de compiler et �a marche pas)
Merci d'avance.
Partager