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 :

Constructeur standard, "nummer" non déclaré?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Oui
    Inscrit en
    Décembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Autriche

    Informations professionnelles :
    Activité : Oui

    Informations forums :
    Inscription : Décembre 2022
    Messages : 36
    Par défaut Constructeur standard, "nummer" non déclaré?
    Salut, désolé pour l’édition, je ne sais pas pourquoi. Le compilateur dit «*nom identificateur non déclaré*». Merci pour l’aide



    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
    class Element {
    private:
    	int nummer;			//  nombre
    	string name;		// le nom
    	float dichte;		// Densité
    	float atomMasse;		//	masse atomique
    public:
    	Element();
    	Element(int num, string nam, float dic, float aMas) : nummer(num), name(nam), dichte(dic), atomMasse(aMas) {}
    	Element( Element& elem) {
    		Element(elem.nummer, elem.name, elem.dichte, elem.atomMasse);
    	}
    	Element& operator=(Element& elem) {
    		nummer = elem.nummer;
    		name = elem.name;
    		dichte = elem.dichte;
    		atomMasse = elem.atomMasse;
    		return *this;
    	}
    	void setNummer(int num);
    	int getNummer();
    	string getName();
    	void setName(string nam);
    	float getDichte();
    	void setDichte(float dic);
    	float getAtomMasse();
    	void setAtomMasse(float aMas);
    	void printElemente();
    	friend void elementEinlesen();
    	~Element() {}
    };
     
     
    class Psde {
    	int nummerInPsde;
    	string s_name;
    public:
    	Psde& operator=(Psde& psde) {
    		nummerInPsde = psde.nummerInPsde;
    		s_name = psde.s_name;
    		return *this;
    	};
    	Psde get_psde() { return *this; }
    	int get_nummerInPsde() { return nummerInPsde; }
    	string get_s_name() { return s_name; }
    	Psde(int nummerPsd = 1, string nam = "") :nummerInPsde(nummerPsd), s_name(nam) {}
    	void printElemente();
    	void printElemente_f(ofstream out, Psde psd);
    	friend std::ofstream& operator<<(std::ofstream&, const Psde&);
    	~Psde(){}
    };
    Element* elePtr;
    Element::Element() {
    	nummer = 0;		//	nombre
    	name = "";			//	nom
    	dichte = 0.0;		// densite
    	atomMasse = 0.0;		// masse atomique
    }
     
    int Element::getNummer() { return nummer; }
    string Element::getName() { return name; }
    float Element::getDichte() { return dichte; }
    float Element::getAtomMasse() { return atomMasse; }
    }
    [/CODE]

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Utilises des accolades pour initialiser les membres de ta classe, cela évitera les ambiguïtés.

    De quoi parle-t-on ici ?
    L'appel d'une fonction appelée nummer ?
    Le constructeur d'une classe appelée nummer ?
    L'initialisation de la variable membre appelée nummer ?

    Pour toi (humain), la réponse est évidente. Pour le compilateur .... non justement. Il à sous la main 3 scenarios qui correspondent, et pas de chance pour toi, celui qu'il à choisit n'est pas celui que tu attendais.

  3. #3
    Inactif  
    Homme Profil pro
    Oui
    Inscrit en
    Décembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Autriche

    Informations professionnelles :
    Activité : Oui

    Informations forums :
    Inscription : Décembre 2022
    Messages : 36
    Par défaut Merci de votre aide
    Cher deedolit,
    Je traduis mes textes de l'allemand vers le français. Et je traduirai vos réponses en allemand. Cela a bien fonctionné jusqu'à présent, mais plus maintenant, pourquoi*? Je ne sais pas.
    J'ai étudié le français pendant 2 ans et maintenant je veux l'améliorer. Essaye de comprendre.
    Vladimir
    Merci.

  4. #4
    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,

    Le code que tu fournis ne semble pas avoir l'erreur que tu indiques.
    Il nous manque quelque chose. Par exemple le vrai code, et le texte exact de l'erreur avec son numéro de ligne.

    Il y a par contre des erreurs dans ton code que le compilateur devrait indiquer sous la forme d'avertissements.
    Ainsi ton constructeur par copie ne fait pas du tout ce qu'il faut. La ligne 11 crée un objet Element temporaire détruit immédiatement. Il n'y a pas construction de l'Element ici.
    Par le constructeur par copie, l'opérateur de copie, et le destructeur ne pas les définir est bien mieux. Dans ce cas le compilateur va faire ce qu'il faut dans ces cas et ne fera pas d'erreurs contrairement à ton code.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Lien vers la documentaion officielle: Brace initialization:
    https://learn.microsoft.com/en-us/cp...?view=msvc-170

  6. #6
    Inactif  
    Homme Profil pro
    Oui
    Inscrit en
    Décembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Autriche

    Informations professionnelles :
    Activité : Oui

    Informations forums :
    Inscription : Décembre 2022
    Messages : 36
    Par défaut Merci dalfab, merci deedolith
    Salut, à la fin est }; c’est faux, peut-être aussi à la fin du tableau PeriodsistemTheElements[]? J’ai plus de 100 messages d’erreur de compilateur, les Element de classe ne sont pas définis, la classe Psde n’est pas définie et tous les attributs etc. Sans table, le programme a fonctionné, je suppose que le problème?


    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    // Elemente3.h
    #include <string>
    #include <iostream>
    #include <fstream>
    using namespace std;
     
    class Element {
    private:
    	int nummer;			//  nombre
    	string name;		// le nom
    	float dichte;		// Densité
    	float atomMasse;		//	masse atomique
    public:
    	Element();
    	Element(int num, string nam, float dic, float aMas) : nummer{ num }, name{ nam }, dichte{ dic }, atomMasse{ aMas } {}
    	Element( Element& elem) {
    		Element{ elem.nummer, elem.name, elem.dichte, elem.atomMasse };
    	}
    	Element& operator=(Element& elem) {
    		nummer{ elem.nummer };
    		name{ elem.name };
    		dichte{ elem.dichte };
    		atomMasse{ elem.atomMasse };
    		return *this;
    	}
    	void setNummer(int num);
    	int getNummer();
    	string getName();
    	void setName(string nam);
    	float getDichte();
    	void setDichte(float dic);
    	float getAtomMasse();
    	void setAtomMasse(float aMas);
    	void printElemente();
    	friend void elementEinlesen();
    	~Element() {}
    };
     
     
    class Psde {
    	int nummerInPsde;
    	string s_name;
    public:
    /*	Psde& operator=(Psde psde) {
    		nummerInPsde { psde.nummerInPsde };
    		s_name{ psde.s_name };
    		return *this;
    	};		*/
    	Psde get_psde() { return *this; }
    	int get_nummerInPsde() { return nummerInPsde; }
    	string get_s_name() { return s_name; }
    	Psde(int nummerPsd = 1, string nam = "") :nummerInPsde{ nummerPsd }, s_name{ nam } {}
    	void printElemente();
    	void printElemente_f(ofstream out, Psde psd);
    	friend std::ofstream& operator<<(std::ofstream&, const Psde&);
    	~Psde(){}
    };
    //Element* elePtr;
    Element::Element() {
    	nummer { 0};		//	nombre
    	name { " "};			//	nom
    	dichte { 0.0};		// densite
    	atomMasse{ 0.0 };		// masse atomique
    }
     
    int Element::getNummer() { return this->nummer; }
    string Element::getName() { return this->name; }
    float Element::getDichte() { return this->dichte; }
    float Element::getAtomMasse() { return this->atomMasse; }
     
    void Element::printElemente() {
    	cout << "Element: " << name << " Nummer in Perioden System: " << nummer
    		<< " hat die Dichte: "
    		<< dichte << " und Atommasse: " << atomMasse << endl;
    }
     
    void Element::setNummer(int num) {
    	nummer = num;
    }
     
    void Element::setName(string nam) {
    	name = nam;
    }
     
    void Element::setDichte(float dic) {
    	dichte = dic;
    }
     
    void Element::setAtomMasse(float aMass) {
    	atomMasse = aMass;
    }
    void elementEinlesen() {
    	int anzahl = 1;
     
    	Element *elePtr = new Element();
    	int ein_nummer;
    	string ein_name;
    	float ein_dichte, ein_atomMasse;
    	cout << "Bitte die Nummer des Elements: ";
    	cin >> ein_nummer;
    	elePtr->setNummer(ein_nummer);
     
    	cout << "Bitte die Name des Elements: ";
    	cin >> ein_name;
    	elePtr->setName(ein_name);
     
    	cout << "Bitte die Dichte des Elements: ";
    	cin >> ein_dichte;
    	elePtr->setDichte(ein_dichte);
     
    	cout << "Bitte die Atommasse des Elements: ";
    	cin >> ein_atomMasse;
    	elePtr->setAtomMasse(ein_atomMasse);
    }
     
    void Psde::printElemente() {
    	cout << " Symbol: " << s_name << " Nr.: " << nummerInPsde << endl;
     
    }
     
    /*void Psde::printElemente_f(ofstream out, Psde psd) {
    	out << psd << '\t';
    }
     
    */
     
    Psde PeriodensystemDerElemente[] = { {0,""}, {1,"H"},{2,"He"},{3,"Li"},{4,"Be"}, {5,"B"}, {6, "C"},
    {7,"N"}, {8, "O"}, {9,"F"}, {10,"Ne"} ,{11, "Na"} , {12, "Mg"}, {13, "Al"}, {14,"Si"}, {15, "P"},
    {16,"S"}, {17,"Cl"}, {18,"Ar"},{19, "K"}, {20, "Ca"},{21,"Sc"},{22,"Ti"},{23,"V"}, {24, "Cr"},
    	{25,"Mn"}, {26,"Fe"}, {27,"Co"},{28,"Ni"},{29,"Cu"},{30,"Zn"}, {31,"Ga"},{32,"Ge"},{33,"As"}
    ,{34,"Se"},{35,"Br"},{36,"Kr"},{37,"Rb"},{38,"Sr"},{39,"Y"},{40,"Zr"},{41,"Nb"},{42,"Mo"},{43,"Tc"},
    	{44,"Ru"},{45,"Rh"},{46,"Pa"},{47,"Ag"},{48,"Cd"},{49,"In"},{50,"Sn"},{51,"Sb"},{52,"Te"},
    	{53,"I"},{54,"Xe"}, {55,"Cs"},{56,"Ba"},{57,"La"},{58,"Ce"}, {59,"Pr"},{60,"Nd"},{61,"Pm"},
    	{62,"Sm"},{63,"Eu"},{64,"Gd"},{65,"Tb"} ,{66,"Dy"},{67,"Ho"},{68,"Er"},{69,"Tm"},{70,"Yb"} ,
    	{71,"Lu"},{72,"Hf"},{73,"Ta"},{74,"W"},{75,"Re"},{76,"Os"},{77,"Ir"},{78,"Pt"},{79,"Au"},
    	{80, "Hg"},{81,"Tl"},{82,"Pb"},{83,"Bi"},{84,"Po"},{85,"At"},{86,"Rn"},{87,"Fr"},{88,"Ra"},
    	{89,"Ac"},{90,"Th"},{91,"Pa"},{92,"U"},{93,"Np"},{94,"Pu"},{95,"Am"},{96,"Cm"},{97,"Bk"},
    	{98,"Cf"},{99,"Es"},{100,"Fm"},{101,"Md"},{102,"No"},{103,"Lr"},{104,"Rf"},{105,"Db"},
    	{106,"Sg"},{107,"Bh"},{108,"Hs"},{109,"Mt"},{110,"Ds"},{111,"Rg"},{112,"Cn"},{113,"Nh"},
    	{114,"Fl"},{115,"Mc"},{116,"Lv"},{117,"Ts"},{118,"Og"} };
     
    void printElementInFile(deque<Psde>  dPsde) {
    	ofstream out("PeriodSysDerElemente.txt");
    	for (deque<Psde>::iterator iter = dPsde.begin(); iter != dPsde.end(); ++iter) {
    		iter->printElemente_f(out, dPsde);
    	}
     
    	std::ofstream& operator<<(std::ofstream & ofs, Psde & psd) {
    		ofs << psd.get_nummerInPsde() << " " << psd.get_s_name() << endl;
    		return ofs;
     
    	}
    };

  7. #7
    Inactif  
    Homme Profil pro
    Oui
    Inscrit en
    Décembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Autriche

    Informations professionnelles :
    Activité : Oui

    Informations forums :
    Inscription : Décembre 2022
    Messages : 36
    Par défaut Merci Bousk
    Je vais essayer.

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

Discussions similaires

  1. [RegEx] quote non ouverte ou non fermée
    Par guitz dans le forum Langage
    Réponses: 0
    Dernier message: 15/07/2012, 13h19
  2. Réponses: 3
    Dernier message: 20/01/2007, 20h36
  3. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17

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