Ensias
Messages postés31Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention15 décembre 2006
-
31 déc. 2005 à 12:52
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008
-
3 janv. 2006 à 07:06
Est ce qu'on peut changer le type d'une variable à l'execution d'un programme c++ .Par exemple donnez le choix à l'utilisateur de choisir le type qu'il veut donnez à une variable: entier,reel,ou string.
Merci
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 1 janv. 2006 à 10:00
Tu peux créer une classe qui peut changer de type, du moins virtuellement.
Tu peux aussi utiliser les UNION:
union MonUnion
{
int a;
float b;
char* c;
};
C'est comme une structure, sauf que l'emplacement mémoire de chaque
champ est le même, donc si tu ecrit dans a, tu perd b et c, si tu ecrit
dans b, tu perd a et c.... Si tu essaye de lire a et que tu viend
d'écrire dans b, tu aura une valeur bizarre, a toi de faire attention
après...
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 1 janv. 2006 à 12:07
Je pense que tu dois lire toujours une chaines, et ensuite tu regardes si ca correspond à un entier, un flottant ou une chaine normale. Je vois pas trop comment une union pourrait faire l'affaire ici
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 3 janv. 2006 à 07:06
Tu fait une classe CValue:
enum EValueCast
{
valueInt,
valueFloat,
valueString,
};
union UValueData
{
// Ce que j'ai marqué plus haut
};
class CValue
{
private:
EValueCast cast;
UValueData data;
public:
setInt(int newValue)
{
cast = valueInt;
data.a = newValue;
}
setFloat(...);
setString(...);
getInt(...);
getFloat(...);
etc...
};
Tu ajoute aussi des test lors de la lecture des valeurs, pour vérifier
que le type est le bon, et dans le cas contraire tu renvoi une erreur.
C'est bien plus rapide que de stocker tes valeurs dans un string et se
taper le décodage du string à chaque fois que tu veux modifier la
valeur ! L'avantage de l'union est que la mémoire est partagée et donc
tu n'utilise que la taille nécessaire et pas 4 fois plus si tu as 4
types possibles.