Comparaison de types ?

Comparaison de types ? - C++ - Programmation

Marsh Posté le 10-05-2005 à 14:46:37    

Bonjour tlm,
 
Je voudrais savoir si en C++, il est possible de tester des types ?
De faire une comparaison de types,  
par exemple :
 

Code :
  1. #if (float != double)


 
voilà,  
 
bon, en fait, je suis plutot face au cas :
 

Code :
  1. #if (bool != int32)


 
que Visual c++ version .net n'aime pas du tout. alors que ca marchait sous visual 5, les vilains


Message édité par NounouRs le 10-05-2005 à 14:46:58
Reply

Marsh Posté le 10-05-2005 à 14:46:37   

Reply

Marsh Posté le 10-05-2005 à 14:48:30    

:ouch:

Reply

Marsh Posté le 10-05-2005 à 14:49:14    

donne un peu plus de code autour pour voir l'intention du développeur garagiste plombier mec quoi ?


Message édité par bjone le 10-05-2005 à 14:51:15
Reply

Marsh Posté le 10-05-2005 à 14:50:02    

:heink:  
 
 
Au pire avec sizeof, mais bon ça me semble assez laid, ce genre de pratique.

Reply

Marsh Posté le 10-05-2005 à 14:50:03    

quel délire :lol:

Reply

Marsh Posté le 10-05-2005 à 14:56:27    

Je vois pas l'intérêt
 
Déjà bool est TOUJOURS différent de int un point c'est tout


Message édité par darknagash le 10-05-2005 à 14:56:41

---------------
C'est avoir tort qu'avoir raison avant les autres
Reply

Marsh Posté le 10-05-2005 à 15:04:15    

on peut comparer le type de deux identificateur (ou type) grace aux templates, mais c'est resolu statiquement et a priori inutile.

Reply

Marsh Posté le 10-05-2005 à 15:08:05    

OK, petit extrait du contexte :  
 
 

Code :
  1. // Add a 32 bit integer to the buffer
  2. virtual void Add(int32);
  3. // Add a 64 bit integer to the buffer
  4. virtual void Add(int64);
  5. /* Add an arbitrary length string to the buffer.
  6.  This writes both the length and the string itself.
  7.  */
  8. virtual void Add(const char *);
  9. // Same as const char * version
  10. virtual void Add(std::string & );
  11. // Add a 32 bit float to the buffer
  12. virtual void Add(float32);
  13. // Add a 64 bit float to the buffer
  14. virtual void Add(float64);
  15. #if (bool != int32)
  16. // Add a boolean value to the buffer.  It will become at least one byte.
  17.         virtual void Add(bool);
  18. #endif
  19. // Add an unsigned character to the buffer
  20. virtual void Add(uint8);
  21. #if (trpgDiskRef != int64)
  22. // Add a 64 bit disk reference to the buffer
  23. virtual void Add(trpgDiskRef);
  24. #endif
  25. // Add a token (16 bit) to the buffer
  26. virtual void Add(trpgToken);


 
 
c'est une des methodes d'une classe.
Quand tout est créé, il y a une sorte de dump memoire de toutes les classes instances, ce qui donne le fichier de souvegarde, il semble donc important de savoir si on stoque des int, des long, et tout et tout
 
 
ce code n'est pas de moi mais, j'ai du bidouillé avec pour en arriver ou j'en suis, mais maintenant, je me demande si certaines erreurs mcomprehensibles ne viennent pas de ces modifs...
 
Le code presenté est celui brut, avant que je ne le touche.


Message édité par NounouRs le 10-05-2005 à 15:10:54
Reply

Marsh Posté le 10-05-2005 à 15:10:43    

un float 32 bits c'est un float.
un float 64 bits c'est un double.
un bool c'est un bool.

Reply

Marsh Posté le 10-05-2005 à 15:11:29    

fin bon valà...

Reply

Marsh Posté le 10-05-2005 à 15:11:29   

Reply

Marsh Posté le 10-05-2005 à 15:11:37    

oui, ba c'est difini dans leur header, si tu veux ils font :

Code :
  1. // Basic data types
  2. #ifndef uint8
  3. typedef unsigned char uint8;
  4. #endif
  5. #ifndef int32
  6. typedef int int32;
  7. #endif
  8. #ifndef uint32
  9. typedef unsigned int uint32;
  10. #endif
  11. #ifndef float32
  12. typedef float float32;
  13. #endif
  14. #ifndef float64
  15. typedef double float64;
  16. #endif


 
ils ont du vouloir faire un code multi plateforme au depart, mais finalement, moi, je ne l'utilise que sur PC


Message édité par NounouRs le 10-05-2005 à 15:12:24
Reply

Marsh Posté le 10-05-2005 à 20:23:18    

Plutôt que de bricoler, j'aurais plutôt ajouté le type (codé comme tu l'entends) de chaque donnée enregistrée dans le fichier, plutôt que de lire la donnée et tenter de déterminer ce que c'est.

Reply

Marsh Posté le 10-05-2005 à 22:28:40    

berk, personne pour faire quelque chose de propre à base de template et de std::numeric_limits<> ?

Reply

Marsh Posté le 10-05-2005 à 22:47:20    

pour faire quoi exactement ?

Reply

Marsh Posté le 11-05-2005 à 21:47:41    

C'est un format de stockage 3D tres peu documenté qui s'appelle Terrapage (Terrex) - extensions   txp   et  tpt
Apparement, le fichier sauvegarde s'apparante à un dump memoire de l'état des objets instanciés à un temps t.
Je parle sans trop savoir, car bien qu'ayant le source, le manque de doc annexe le rend tres peu lisible.
 
Donc apparament, ils stockent et à la relecture, c'est sans savoir ce qu'ils vont rencontrer qu'ils avancent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed