Journal Surcharge d'opérateur dès l'initialisation en c++

Posté par  .
Étiquettes : aucune
0
21
mai
2004
Cher journal,

J'ai un souhait très simple mais je ne sais pas si c'est réalisable..

Alors voilà en gros le truc :
J'ai surchargé les opérateurs de ma classe que nous allons appeler ici String

On ne peut pour l'instant que faire :
String chaine("coucou"); // OK
/////////////////////////////////////////////////////////
String chaine;
chaine="coucou"; //OK
/////////////////////////////////////////////////////////
en revanche :
String chaine="coucou"; //pas encore réussi a faire marcher

D'où ma question, est-ce possible de surcharger l'opérateur = dès l'initialisation ??


Merci d'avance
  • # bof

    Posté par  . Évalué à 0.

    D'abord, si tout le monde mettait ces petits problèmes de prog, les journaux ne ressemblerait à rien du tout :-)

    Ensuite, il n'y a pas à mon avis d'intérêt d'utliser la sytaxe :
    String chaine="coucou"; alors que String chaine("coucou"); est la bonne façon de faire.
    On fait appelle à un constructeur de type String( char * ) et c'est comme cela que le c++ a été prévu.

    Pourquoi chercher à faire se genre de chose ?

    Tu ferais mieux de passer à la suite de ton programme. :-)
  • # Re: Surcharge d'opérateur dès l'initialisation en c++

    Posté par  (site web personnel) . Évalué à 2.

    Quand tu écris :
    String chaine="coucou";
    Ce n'est pas l'opérateur = qui est appelé mais le constructeur qui prend un const char* en paramètre. En fait, c'est le même qui est appelé lorsque tu écris :
    String chaine("coucou");
    les deux syntaxes étant équivalentes...

    Pour ton problème, je ne vois pas.
    Peux-tu montrer le code de la classe ?
    • [^] # Re: Surcharge d'opérateur dès l'initialisation en c++

      Posté par  (site web personnel) . Évalué à 3.

      Le programme suivant est valide et compile parfaitement avec g++ 3.4 (flags -ansi -pedantic -W -Wall) :
      struct String
      {
              String() { /* ... */ }
              String(const char* const buf) { /* ... */ }
              String& operator=(const char* const buf) { /* ... */ return *this; }
      };
      
      int main()
      {
              String s1("coucou");
              String s2 = "coucou";
      
              String s3;
              s3 = "coucou";
      }
  • # Désolé

    Posté par  . Évalué à 0.

    Oui bon j'avoue c'etait très con comme question...

    J'ai commencé par coder le operator= et donc jme suis apercu que ca ne marchais pas lors de l'initialisation, j'ai ensuite coté le constructeur String(char *) pour patienter, et je n'ai meme pas retesté. Effectivement depuis cette modif je peux mettre = dès l'initialisation.

    Désolé pour le dérangement..
  • # fclc++ !

    Posté par  . Évalué à 2.

    Etrange, il me semblait que ton 3ème cas était équivalent au 1er.

    Poste ton code sur fr.comp.lang.c++ et tu auras la réponse rapidement.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.