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 les valeurs d un tableau


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut initialiser les valeurs d un tableau
    Salut, salut,
    j arrive pas a initialiaser les valeurs de mes tableaux dans differentes structures. Quelqu un pourrait-il m aider a le corriger ou faire une suggestion, car mon Compilateur me dit: "Error=Data member initializer ist not allowed"
    Merci pour votre reponse.
    Voici mes codes:
    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
    class CMethode
    {
        public:
            void Menue (void);
            void Distinction_dOption(int Choix); 
     
        protected:
            struct Personne
            {
                char Noms[50];
                int NrIdent[7] = {11, 13, 17, 19, 23, 29, 31}; // C est ici que l erreur est signalee
            }A1;
     
            struct Compte
            {
                char Noms[50];
                int NrCompte[7] = {111, 113, 117, 119, 123, 129, 139}; // C est ici que l erreur est signalee
            }A1;
    };

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Comme le dit gentiment ton compilateur ta syntaxe n'est pas valide.
    Une telle syntaxe est il me semble possible en C++14 pour les variables const (static?), pas pour les membres.
    Pour initialiser les membres, on utilise le constructeur.
    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.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    En plus de ce qu'a dit bousk, il faudrait que tu te mette un tout petit peu à la page : pour une une chaine de caractères (comme pour tes variables Noms), on utilise la classe std::string, et, pour les tableaux contigus de données, on utilise -- en fonction du fait que l'on connaisse ou non la taille du tableau à la compilation -- les classes std::array ou std::vector.

    (Oui, je sais... j'ai volontairement donné tous les liens en version anglaise... Mais, comme la plus grande partie de la documentation que tu trouveras en informatique est écrite dans la langue de Shakespeare, je me dis que c'est un bon plan que de t'y habituer tout de suite )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Meme probleme, sauf si j ai pas bien mange ce matin!
    Bonjour a tous,
    tout d abord merci a Bousk et Koala01. J ai pu consulter hier soir les differents liens envoyes et essayer d appliquer mot a mot, ce que j ai pu comprendre. Mais le resultat reste inchange.
    Je suis consciens des regles du forum, a savoir ne pas faire mon devoir, mais m aider a resoudre mes problemes ou combler mes lacunes.
    Merci pour vos reactions!

    Code Principal:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    #include <iostream>
    #include <array>
    #include<string>
    #include <iterator>
    #include<algorithm>
    #include "Klasse CBank.h"
    #include "CKonto.h"
    #include "Klasse CInhaber.h"
    using namespace std;
     
     
     
     
    void main (void)
    {
        CBank A;
        A.StartProjekt();
    }
    ==================================================================================================
    ==================================================================================================
    Headerdatei
    class CBank
    {
        protected:
           // KontoInhaber
            char Namen[50];
            std::array<unsigned int, 8> IdentNr = {11, 13, 17, 19, 23, 29, 31, 37}; // "Error=Data member initializer ist not allowed"
            std::array<unsigned int, 8> KtoNr = {111, 113, 117, 119, 123, 129, 131, 137}; // "Error=Data member initializer ist not allowed"
     
     
     
        public:
            void StartProjekt (void);
            void Auswahlverfahren(int Auswahl); 
     
            // Konstruktor
     
     
    };
    ======================================================================================
    ======================================================================================
    Methode
    // -------------------------------------> Methode fuer das Menue <----------------------------------------------
     
    #include <iostream>
    #include <array>
    #include<string>
    #include "Klasse CBank.h"
    using namespace std;
     
    void CBank::StartProjekt (void)
          { 
               int Wahl;
            cout <<"----------------->> KONTOVERWALTUNG <<----------------\n\n"<<endl;
            while(1)
            {
            cout <<"Eingabe-Menue:\n"
                    <<" [1] Einzahlung auf ein Konto;\n"
                    <<" [2] Auszahlung von einem Konto;\n"
                    <<" [3] Zuordnung eines Kontos zu einem Inhaber;\n"
                    <<" [4] Zuordung loeschens;\n"
                    <<" [5] Aktuelle Zuordnungsliste;\n"
                    <<" [6] Liste aller Kontoinhaber und aller Konten;\n"
                    <<" [0] Programmende.\n"
                    <<"\nGeben Sie einen der Menuepunkte ein: ";    cin>>Wahl;
              Auswahlverfahren(Wahl);
            }
         }
     
        void CBank::Auswahlverfahren(int Auswahl)
        {
            switch(Auswahl)
            {
                case 0:
                    cout<<"\nFin du Programme!!!"<<"\n"<<endl; break; 
                case 1:
                     cout<<"\nVersement!"<<"\t"<<"Einzahlung auf ein Konto"<<"\n"<<endl; break;
                case 2:
                     cout<<"Retrait!"<<"\n"<<endl; break;
                case 3:
                     cout<<"Attribution de compte a une personne!"<<"\n"<<endl; break;
                case 4:
                     cout<<"Supprimmer le compte!"<<"\n"<<endl; break;
                case 5:
                     cout<<"Liste d attribution des comptes!"<<"\n"<<endl; break;
                case 6:
                     cout<<"Liste des personnes et comptes!"<<"\n"<<endl; break;
                default:
                    break;
            }
        }

  5. #5
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Quel compilateur utilise-tu? Le c++11 est-il activé?
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Tu es dur de la feuille

    Ce sont des attributs de classes (ou valeurs membres) donc tu ne peux pas le faire comme si c'étaient des variables locales ou statiques quelque soit le type P.O.D. (Pain Old Data), std::vector ou autre

    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
    26
    27
    28
    29
    class CBank
    {
    protected:
    // KontoInhaber
    char Namen[50];
    std::array<unsigned int> IdentNr;
    std::array<unsigned int> KtoNr;
     
     
    public:
    void StartProjekt (void);
    void Auswahlverfahren(int Auswahl);
     
    // Konstruktor
    public:
     
        CBank(/**/) {
            KtoNr.resize(8); // <- si c'est un std::vector ou std::array
     
            KtoNr[ 0] = 111; KtoNr[ 1] = 113; KtoNr[ 2] = 117; KtoNr[ 3] = 119;
            KtoNr[ 4] = 123; KtoNr[ 5] = 129; KtoNr[ 6] = 131; KtoNr[ 7] = 137;
     
            IdentNr.resize(8); // <- si c'est un std::vector ou std::array
     
            IdentNr[ 0] = 11; IdentNr[ 1] = 13; IdentNr[ 2] = 17; IdentNr[ 3] = 19;
            IdentNr[ 4] = 23; IdentNr[ 5] = 29; IdentNr[ 6] = 31; IdentNr[ 7] = 37;
        } 
     
    };

  7. #7
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    En c++11, une syntaxe possible est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::array<unsigned int, 8> IdentNr{{11, 13, 17, 19, 23, 29, 31, 37}};
    ps : utilise la balise CODE stp à l'avenir.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci les gars!
    Salut salut,
    merci pour toutes vos suggestion.
    SkyZoThread j utilise Visualstudio 2010. Avec celui de 2012, je rencontrais la meme difficulte.
    Foetus, grace a toi, j ai pu contouner l affaire avec ta proposition. Thanks for that

  9. #9
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Avec vs2012 le c++11 est supporté. Tu aurais du pouvoir utiliser l'initialisation par double braces comme je t'ai montré, mais la bonne vielle méthode fait l'affaire
    Tu peux passer le thread en résolu.
    Salut.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je comprends tres bien ce que tu dis. Mais ma confusion se trouve dans le fait, que :

    1. j aimerai proteger mes variables dans une classe grace a "protected", ou j aurai un tableau de string contenant plusieurs noms, et l autre tableau contenant des numeros.
    Bisarement, quand j introduit #include <string> dans mon code source et vais dans la classe ecrire:
    std::string Noms[8]; pour reserver 8 case, afin de toutes les remplir avec un nom, ca me signale l erreur suivante: Error:name followed by '::' must be a class or namespace name

    2. Je ne sais, s il faut me faut ajouter une autre bibliotheque pour ecrire de la meme facon que toi, SkyZoThread, car le meme probleme se reproduit.

  11. #11
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    C'est pour ce genre de comportements que j'abadonne le compilateur de crosoft 2 projets sur 3.
    Ca arrive quand tu actives le c++11 uniquement c'est ça? faut demander à un guru de vc++
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  12. #12
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Mouais enfin, échouer à faire un tableau de 8 string, et blâmer Visual Studio... faut pas pousser hein.
    Maintenant si l'on doit deviner comment tu t'en sors pour avoir une telle erreur, je dirais que l'include est dans le cpp et non dans le h, donc effectivement il ne connait pas std::string. Mais ça c'est juste de la boule de crystal avec les très maigres infos que tu donnes.

    Btw, on est à VS2015 désormais. Et les dernières versions n'ont fait qu'évoluer rapidement et dans le bon sens. 2010 était pas mal, mais depuis 2013 on a un support C++11 tout à fait correct.
    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.

  13. #13
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Mouais enfin, échouer à faire un tableau de 8 string, et blâmer Visual Studio... faut pas pousser hein.
    Héhé c'est pas faux, mais ça sent le fanboy énervé
    Citation Envoyé par Bousk Voir le message
    Btw, on est à VS2015 désormais. Et les dernières versions n'ont fait qu'évoluer rapidement et dans le bon sens. 2010 était pas mal, mais depuis 2013 on a un support C++11 tout à fait correct.
    Pas 2012 ? J'ai fait des tests.. ça à l'air de marcher pas mal
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  14. #14
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    Pas 2012 ? J'ai fait des tests.. ça à l'air de marcher pas mal
    Héhé... Si tu l'as encore, essaye un code tout bête, comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class NonCopyable{
    public:
        NonCopyable(NonCopyable const &) = delete;
        NonCopyable & operator=(NonCopyable const &) = delete;
    protected:
        NonCopyable() =default;
        ~NonCopyable()=default;
    };
    Sauf erreur de ma part, à moins d'avoir le SP de VS (et encore), un code aussi simple que cela te sortira quatre erreur, pour cause de clausse delete ou default non connue
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Je suis déjà loin d'être complètement passé du C au C++98 je ne connais pas grand chose du 11 et VC++2012 faisait bien l'affaire pour moi
    Evidement, je te crois sur parole, mais le but était plutôt de prendre la défense de VC pour ne pas passer pour un troll anti-crosoft...
    Et toi tu viens de balancer un gros taquet dedans
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  16. #16
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Mais je te rassure : Ca, c'est corrigé avec VS 2015...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. initialiser toutes les valeurs d'un tableau
    Par Biosox dans le forum C++
    Réponses: 1
    Dernier message: 09/11/2007, 10h41
  2. Réponses: 9
    Dernier message: 05/11/2005, 14h59
  3. [Struts] Comment initialiser les valeurs d'un formulaire
    Par Sniper37 dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/04/2005, 15h02
  4. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20
  5. Compter les valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 6
    Dernier message: 30/03/2004, 13h29

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