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 :

Initialiser une structure contenant des pointeurs ?


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Par défaut Initialiser une structure contenant des pointeurs ?
    Bonjour,

    j'ai beau chercher je ne trouve pas comment faire, voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct face
    {
    	int* v1, v2, v3;
    }
     
    face faceList;
     
    faceList = {&var1, &var2, &var3};
    A la dernière ligne j'obtiens l'erreur : no match for 'operator='

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Ta définition indique un seul pointeur et 2 valeurs entière. Pour initialiser 3 pointeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	struct face {
    		int* v1, *v2, *v3;
    	};
     
    	face faceList1{ &var1, &var2, &var3 };
    	face faceList2 = { &var1, &var2, &var3 };
    	faceList1 = face{ &var1, &var2, &var3 };

  3. #3
    Membre averti
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Par défaut
    Merci d'avoir répondu aussi vite.
    J'ai apporté toutes les modifications mais j'ai eu exactement la même erreur, je ne sais pas si ça change quelque chose mais var1, var 2 et var3 sont des structures également mais différentes de 'face'. Quand je remplace ces trois valeurs d'initialisation par des 0 plus d'erreur...

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Face contient des pointeurs sur int, donc normal que tu ne puisses pas y mettre des pointeurs sur des structures.

    Quand je remplace ces trois valeurs d'initialisation par des 0 plus d'erreur...
    Cela fait 8 ans que 0 ne devrait plus être utilisé pour initialiser un pointeur. D'ailleurs, la plupart des compilateurs bien configurés émettent un avertissement « Zéro comme constante de pointeur nul ». C'est à dire qu'il faut utiliser nullptr.

    Note: ne déclare pas les variables sur une seule ligne, comme tu as pu le constater, c'est assez facile de se rater sur l'intention.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Silvano_Dimitrio Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct face
    {
    	int* v1, v2, v3;
    }
     
    face faceList;
     
    faceList = {&var1, &var2, &var3};
    A la dernière ligne j'obtiens l'erreur : no match for 'operator='
    Parce que cette syntaxe d'initialisation ne fonctionne qu'à la déclaration et non avec une assignation.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Parce que cette syntaxe d'initialisation ne fonctionne qu'à la déclaration et non avec une assignation.
    En C++89 peut-être, mais c'est entièrement valide en C++11.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/08/2012, 18h10
  2. Initialiser une structure contenant un tableau
    Par Muetdhiver dans le forum C
    Réponses: 4
    Dernier message: 13/10/2010, 18h46
  3. [MySQL] Enregistrer en BDD une requête Mysql contenant des variables PHP puis l'exécuter
    Par ChriGoLioNaDor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2009, 02h13
  4. Dupliquer une structure contenant des mutables
    Par bumbolol dans le forum Caml
    Réponses: 6
    Dernier message: 28/01/2009, 21h37
  5. Réponses: 2
    Dernier message: 25/07/2005, 14h27

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