IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Transformer des champs T * en const T *


Sujet :

C

  1. #1
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut Transformer des champs T * en const T *
    Salut,

    Je me demandais si il yavait une astuce pour transformer une structure de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct {
     char * a;
     int * tab;
    }
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct {
     const char * a;
     const int * tab;
    }
    ?

    Si la structure devient const, ce sont les pointeurs qui deviennent const, mais j'aimerais aussi que la valeur pointée le devienne aussi.

    Ya pas beaucoup d'espoir mais on sait jamais

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu veux dire, un moyen de convertir un pointeur sur la structure ? Non, hélas.


    Pour ça, il faut du C++ avec des getters const et non-const.
    Code C++ qui n'a rien à faire ici: : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class CUneClasse
    {
    public:
    	CUneClasse(char *pChars);
    	~CUneClasse();
    public:
    	const char *getChars() const;
    	char * getChars();
    private:
    	char * m_pChars;
    };
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Ah, je croyais que le const apres une methode voulait dire "cette methode ne modifie pas l'objet"

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est le cas, mais les méthodes non-const ne peuvent pas être appelées sur un objet const.

    Et une bonne méthode const peut (et doit) non seulement ne pas modifier l'objet, mais aussi ne fournir aucun moyen de le modifier (l'objet, ou ses dépendances).


    Donc, dans le cas que j'ai montré, si l'objet est const, le pointeur retourné par getChars() le sera aussi.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Ah oui oki

    Thanks

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformation de champs contenant des listes d'ID
    Par bastoonet dans le forum Alimentation
    Réponses: 0
    Dernier message: 28/01/2009, 14h55
  2. [MySQL] Transformer un champ VARCHAR en TINYINT contenant des données
    Par yoyot dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/06/2007, 15h47
  3. [MySQL] Transformer des champs vides en NULL
    Par Odomat dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/03/2007, 17h42
  4. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  5. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo