Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2358 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Conversions utilisateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversions utilisateur

n°920233
xterminhat​e
Si vis pacem, para bellum.
Posté le 11-12-2004 à 10:46:55  profilanswer
 

Je definis 4 classes de la façon suivante :

Code :
  1. struct A { operator B(); };
  2. struct B { operator C(); };
  3. struct C { operator D(); };
  4. struct D{};


 
Mon compilateur rejette cette ecriture :

Code :
  1. A a
  2. D d( a );


 
J'en suis a ecrire...

Code :
  1. A a;
  2. D d = static_cast<C>(static_cast<B>(a));


Il me semblait que les conversions implicites utilisateur pouvait être chainées (max de 4) ?


Message édité par xterminhate le 11-12-2004 à 10:54:59

---------------
Cordialement, Xterm-in'Hate...
mood
Publicité
Posté le 11-12-2004 à 10:46:55  profilanswer
 

n°920239
Taz
bisounours-codeur
Posté le 11-12-2004 à 11:18:50  profilanswer
 

déjà ça manque de const.
 
du reste, le C et le C++ on toujours fonctionné comme ça : une seule conversion est implicite, sinon bonjour le bordel. C'est d'autant plus visible dans trucs simple comme entre Base** et Foo**.

n°920245
xterminhat​e
Si vis pacem, para bellum.
Posté le 11-12-2004 à 11:38:53  profilanswer
 

Ca manque de const uniquement dans la synthèse qui est sur le forum. Le code original est propre.
 
Si dans le sens A vers D, la conversion est problématique, elle l'est moins dans le ens inverse (D vers A) !
 

Code :
  1. struct D {};
  2. struct C { C(); C( const D& ); operator D() const; };
  3. struct B { B(); B( const C& ); operator C() const; };
  4. struct A { A(); A( const B& ); operator B() const; };


 
Le compilateur sait chainer deux conversions utilisateur :

Code :
  1. D d;
  2. B b( d );
  3. //B b = d ; ne passe pas !


 
Le compilateur ne sait pas chainer plus de deux conversions utilisateur :

Code :
  1. D d;
  2. A a( d );


 
Je peux admettre que multiplier les conversions implcites nuit à la lisibilité, mais j'ai du mal à comprendre pourquoi le comportement n'est pas symétrique.


---------------
Cordialement, Xterm-in'Hate...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Conversions utilisateur

 

Sujets relatifs
[C++] ConversionsDossier utilisateur sous XP Familiale et Win 4.x
Création de comptes utilisateur sous Win XP en VBSutilisateur de windev
"Contrat d'utilisateur final" <-- Qu'est-ce que c'est ?[JS] Annuler la création d'un objet utilisateur
récupérer le nom de l'utilisateur qui fait tourner apacheProtection répertoire utilisateur
Recuperer le login de l utilisateur courant sur le poste clientOutil graphique pour interface utilisateur
Plus de sujets relatifs à : Conversions utilisateur


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)