begin process at 2012 05 28 15:30:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Changement de type


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Changement de type

samedi 31 décembre 2005 à 12:52:35 | Changement de type

Ensias

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
dimanche 1 janvier 2006 à 10:00:06 | Re : Changement de type

neodelphi

Membre Club
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...

neodelphi
dimanche 1 janvier 2006 à 10:13:37 | Re : Changement de type

Ensias

Mais lorsque j'utilise un objet string dans une union le compilateur me genere une erreur.
dimanche 1 janvier 2006 à 12:07:41 | Re : Changement de type

vecchio56

Administrateur CodeS-SourceS
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
mardi 3 janvier 2006 à 07:06:21 | Re : Changement de type

neodelphi

Membre Club
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.

neodelphi


Cette discussion est classée dans : variable, type, changement


Répondre à ce message

Sujets en rapport avec ce message

affectation valeur variable type char [ par Vinsou ] J'ai une variable char qui doit contenir du texte. Mais au milieu de ce texte il y a des valeurs provenant d'une base de donnée. Comment faire pour a Conversion de types de données... [ par nullspace ] J'ai jamais réussis à trouver une bonne solution pour convertir un type de variable dans une autre variable ayant un autre type.Par exemple...si j'ai petit pb de type string [ par bidules ] D'apres ce que g pu apprendre lorsque l'on veut declarer une variable de type string il faut faire :#include string variable;c bien ca? car qd je fais Variable int sur le disque... [ par nullspace ] Je cherche à enregistrer et lire sur le disque par ofstream et ifstream à partir de variables de type int.Seulement il m'écrit sous format texte.En vb type de variable? long int ? [ par dleewax ] salut! je suis nouveau dans le C++ et j'ai un petit problème... je suis en train de faire un petit programme permettant de calculer les factorielles.. conversion de type!! [ par bub97 ] je veux mettre une variable unsigned char dans une variable de type string mais voila que ceci me donne des caracteres plutot bizarre. AIDEZ MOI!!!PS: Conversion de CString vers Int [ par DARKSIDIOUS ] Bonjour à tous,J'ai un problème qui me turlupine depuis quelques heures : comment fait-on pour convertir des données d'une variables de type CString v type de donnée inconnu [ par jeffise57 ] dans une fonction developper par une autre personne j'ai un type char** trucmuche, cette variable est un buffer qui doit recevoir le résultat qu'est c Type de variable inconnu [ par LordBob ] Bonjour a tous,voila je regarder un code est je suis tomber sur un type de variable que je ne connaissais pas, j'espère que vous pourrez m'aider !!!HI arrondir une variable type double [ par cncfanatics ] bonjour , comment on peux arrondir une variable de type double pour suprimer tous les chifres apres la virgule ?? (l'arrondissement doit etre vers le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,574 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales