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

  FORUM HardWare.fr
  Programmation
  C++

  Operateur de transtypage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Operateur de transtypage

n°954917
Mackila
Posté le 17-01-2005 à 18:11:17  profilanswer
 

Bonjour,
 
Pour l'écriture d'un simulateur, je voudrais me définir des classes d' "items". J'appelle un item pour mon programme un bit ou un entier non signé, accompagné de la date de sa dernière modification.
Ces items travaillent sur une référence, ce qui me permet par exemple de déclarer des items bits à l'intérieur d'un item octet.
 

Code :
  1. class item_bit {
  2. public :
  3.  item_bit(BYTE&  octet, int numero) ; // bit d'un octet
  4.  [...]
  5.  ~item_bit() ;
  6.  operator bool(void) ; // Lecture valeur bool
  7.  FILETIME derniereModification(void) ;
  8.  item_bit& operator=(bool valeur) ; // Ecriture à partir d'un booleen
  9.  [...]
  10. private :
  11.  [...]
  12.  BYTE&  lOctet ;
  13.  int    bit    ;
  14.  FILETIME dateDerniereModification ;
  15. } ; // class item_bit
  16. typedef class module_simule::item_bit    ITEM_BIT  , *PITEM_BIT   ;
  17. template <class T>
  18. class item {
  19. public :
  20.  item(T& donnee) : laDonnee(donnee) { GetSystemTimeAsFileTime(&dateDerniereModification) ; } ;
  21.  ~item() {} ;
  22.  FILETIME derniereModification(void) { return dateDerniereModification ; } ;
  23.  operator T(void) { messageDeDebug("operator T(void)\n" ) ; T donnee ; donnee = laDonnee ; messageDeDebug("operator T(void) : return\n" ) ; return donnee ; } ; // Lecture
  24.  item& operator=(T valeur) { laDonnee = valeur ; GetSystemTimeAsFileTime(&dateDerniereModification) ; return *this ; } ; // Ecriture
  25.  [...]
  26. private :
  27.  T& laDonnee ;
  28.  FILETIME dateDerniereModification ;
  29. } ; // class item
  30. typedef class module_simule::item<BYTE>  ITEM_BYTE , *PITEM_BYTE  ;
  31. [...]


 
Le problème que j'ai se situe au niveau de l'opérateur de transtypage vers un T :
 

Code :
  1. operator T(void)
  2. {
  3. T donnee ;
  4. donnee = laDonnee ;
  5. return donnee ;
  6. }


 
Mon code se plante lamentablement sur la ligne

donnee = laDonnee ;


 
Mes items sont déclarés dans une classe "module" (dérivée d'une class module_simule) sous la forme :
 
.h

Code :
  1. class Module16RO : public module_simule {
  2. public :
  3. Module16RO(PESBIM_SIMULEE hote) ;
  4. ~Module16RO() {} ;
  5. [...]
  6. private :
  7. BYTE zz_sorties1 ;
  8. BYTE zz_sorties2 ;
  9. public : // Déclaration des items
  10. ITEM_BIT   O01            ;
  11. ITEM_BIT   O02            ;
  12. ITEM_BIT   O03            ;
  13. [...]
  14. ITEM_BIT   O16            ;
  15. ITEM_BYTE  Sorties1       ;
  16. ITEM_BYTE  Sorties2       ;
  17. } ; // class Module16RO


 
.cpp

Code :
  1. #include "Module16RO.h"
  2. Module16RO::Module16RO(PESBIM_SIMULEE hote) :
  3. ///////////////////////////////////////////////////////////////////////////////
  4. // Paramétrage des items :
  5. O01            ( zz_sorties1       ,  0 ) ,
  6. O02            ( zz_sorties1       ,  1 ) ,
  7. O03            ( zz_sorties1       ,  2 ) ,
  8. [...]
  9. O16            ( zz_sorties2       ,  7 ) ,
  10. Sorties1       ( zz_sorties1            ) ,
  11. Sorties2       ( zz_sorties2            ) ,
  12. ///////////////////////////////////////////////////////////////////////////////
  13. module_simule(hote)
  14. {
  15. Sorties1 = 0 ;
  16. Sorties2 = 0 ;
  17. }
  18. [...]


 
 
Je ne comprends pas pourquoi cela peut se planter, un item ayant la même durée de vie que le module auquel il appartient, et la variable référencée faisant elle aussi partie du module...
 
 
 
 
surcharge operateur transtypage reference

mood
Publicité
Posté le 17-01-2005 à 18:11:17  profilanswer
 

n°954934
Taz
bisounours-codeur
Posté le 17-01-2005 à 18:35:34  profilanswer
 

   * operator T(void)
    * {
    *     T donnee ;
    *     donnee = laDonnee ;
    *     return donnee ;
    * }
 
 
 
(void) inutile
et puis c'est pas const
 
 
le reste, tu penses quand même pas qu'on va lire toutes les triperies de ton truc : isole le problème.
 
 
et puis tu ferais bien de relire ton chapitre sur le mot clef "const" : c'est bien simple t'en a mis aucun, par contre les reférence ça y va !

n°955014
Mackila
Posté le 17-01-2005 à 20:45:04  profilanswer
 

<content mais pas sérieux>
Taz je t'aime  :love: !
J'ai collé des const partout, j'ai rien touché d'autre et ca fonctionne  :D  
</content mais pas sérieux>
 
Maintenant la partie difficile, ca va être de comprendre pourquoi.


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

  Operateur de transtypage

 

Sujets relatifs
Besoin d'aide en php (opérateur >>)Surcharge d'operateur et compilation
[class] Surcharge d'opérateur +[C++] Gérer des priorités d'opérateur
operateur = besoin d'aide pour le comprendreDelphi : transtypage Interger -> Char : ??
[C++] Problème de surcharge d'opérateuropérateur d'affectation
Surcharge d'opérateurl'operateur delete en C++...comment ca marche?
Plus de sujets relatifs à : Operateur de transtypage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR