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 :

utilisation d'une structure


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut utilisation d'une structure
    voila je souhaite crée une variable me permettant la gestion de mes erreurs je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <string>
    using namespace std;
     
    struct
    {
       int x;
       std::string y;
    } Mon_Erreur = {
    	1, "Erreur1",
    	2, "Erreur2"
     };
    et VC6 me retourne l'erreur :
    error C2552: 'Mon_Erreur' : non-aggregates cannot be initialized with initializer list
    et
    error C2639: compiler generated default constructor required by unnamed class

    Et la je ne comprends pas car lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    struct
    {
       int x;
       int y;
    } Mon_Erreur = {
    	1, 11
    	2, 12
     };
    Je ne rencontre aucun problème

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    On ne peut pas faire ça avec des objets.
    Rajoute un constructeur à ta structure et oublie le tableau initialisé de la sorte.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    est-ce bien la cause du rejet? le code suivant se compile et s'exécute
    avec le MinGW

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #include <string>
    #include <iostream>
    using namespace std;
     
    struct
    {
       int x;
       std::string y;
    } Mon_Erreur [2] = {
       {1, "Erreur1"},
       {2, "Erreur2"}   
     };
    int main () {
        cout << Mon_Erreur[0].y << endl;
        cin.ignore();
        return 0;
    }

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    lorsque je souhaite compile ce code sous VC6: il me donne 'genereusement' ces petites erreurs:
    --------------------Configuration: test - Win32 Debug--------------------
    Compiling...
    main.cpp
    h:\pgm\work\la_drm\test\main.cpp(10) : error C2440: 'initializing' : cannot convert from 'const int' to 'struct '
    No constructor could take the source type, or constructor overload resolution was ambiguous
    h:\pgm\work\la_drm\test\main.cpp(10) : error C2440: 'initializing' : cannot convert from 'char [8]' to 'struct '
    No constructor could take the source type, or constructor overload resolution was ambiguous
    h:\pgm\work\la_drm\test\main.cpp(11) : error C2440: 'initializing' : cannot convert from 'const int' to 'struct '
    No constructor could take the source type, or constructor overload resolution was ambiguous
    h:\pgm\work\la_drm\test\main.cpp(11) : error C2440: 'initializing' : cannot convert from 'char [8]' to 'struct '
    No constructor could take the source type, or constructor overload resolution was ambiguous
    h:\pgm\work\la_drm\test\main.cpp(12) : error C2639: compiler generated default constructor required by unnamed class
    Error executing cl.exe.

    test.exe - 5 error(s), 0 warning(s)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    struct Mes_Erreur 
    {
    public:
    	int x;
    	std::string y;
     
       Mes_Erreur() {
       }
       Mes_Erreur(int p1, std::string p2) 
       {
          x = p1;
          y = p2;    
       }
    };
    Mes_Erreur Mon_Erreur [2] = { 
       Mes_Erreur(1, "Erreur1"),
       Mes_Erreur(2, "Erreur2")
     };
     
    int main () { 
        cout << Mon_Erreur[1].y << endl; 
        cin.ignore(); 
        return 0; 
    }
    Voila ce que j'ai du faire pour eliminer les erreurs
    mais je ne comprends pas pourquoi VC compile sans probleme lorsque l'on utilise que des int et sort des erreur quand on utilse des std::string

    merci pour votre aide

  6. #6
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Effectivement ça compile aussi avec VC7, mais pas avec VC6.

    Utiliser un constructeur sera un peu plus lourd à utiliser mais ce sera sûrement mieux (et surtout ça compilera).
    Sinon, au pire tu peux toujours utiliser un const char* si ce ne sont que des chaines constantes que tu veux stocker.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Je vais rester avec mon constructeur c'est vrai que comme ca le code a l'air plus propre.
    Merci pour votre aide

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Hum... au temps pour moi, j'ai du confondre avec le passage de telles listes en paramètre des constructeurs.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Invité de passage
    Inscrit en
    Août 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 1
    Par défaut POD
    Regardez ce que c'est qu'un POD en C++

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/01/2012, 09h06
  2. Utilisation d'une structure en multithread
    Par istaccr dans le forum C
    Réponses: 7
    Dernier message: 12/10/2011, 09h14
  3. [VB.NET]Utilisation d'une structure
    Par Yolak dans le forum VB.NET
    Réponses: 6
    Dernier message: 26/09/2010, 10h07
  4. [MEX] Utilisation d'une structure dans un sous-programe
    Par Michael007 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/07/2009, 10h31
  5. Utilisation d'une structure,tableau adéquat
    Par snopims_ dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/10/2007, 07h59

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