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 :

[struct & const] init


Sujet :

C++

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [struct & const] init
    je cherche a initialisé un membre constant d une structure...


    pouvez vous me dire comment SVP ?

    definition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct TMaStruct
    {
    	const std::vector<MonType>::iterator iter1;
    	int iInitValue;
    };
    j ai une erreur C2512 qui me dit que j ai pas de constructeur aproprié ( evideamment ca a l air d'etre la seul manière d initialisé un membre de structure constant).

    Mais comment le coder ???

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le seul moyen d'initialiser une constante est de le faire à sa construction, donc dans la liste d'initialisation si elle est membre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct TMaStruct
    {
        TMaStruct() : iter1(...) {}
     
        const std::vector<MonType>::iterator iter1;
        int iInitValue;
    };
    Mais je ne vois pas avec quoi tu vas pouvoir initialiser ton itérateur, ni quel sens cela pourrait avoir vu que le conteneur duquel viendra l'itérateur va vraissemblablement changer par la suite. Ce ne serait pas un const_iterator que tu voudrais en fait ?

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ce ne serait pas un const_iterator que tu voudrais en fait ?
    oui c 'est exactement ca !

    que se passe t il avec un const_iterator si le vector subit des changements apres avoir setter le const_iterator ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tout itérateur, const ou pas, est invalidé lors d'ajouts / insertions / suppressions dans le vector. Vois le vector comme une zone mémoire, et l'itérateur comme un pointeur vers une case de cette zone. Lorsque tu manipules des éléments la zone mémoire peut bouger pour s'agrandir, tout ce qui pointe dessus n'est donc plus valide.

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

Discussions similaires

  1. Init const map dans derivee
    Par sone47 dans le forum Langage
    Réponses: 21
    Dernier message: 27/03/2013, 14h21
  2. Réponses: 6
    Dernier message: 01/08/2011, 00h22
  3. Init d'une const map dans une classe
    Par vdaanen dans le forum SL & STL
    Réponses: 4
    Dernier message: 15/01/2009, 15h03
  4. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

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