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.
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);
}
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!
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 ?

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) ;
}
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.
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.