Class Wertzuweisung



  • Ich habe mal wieder ein Problem und finde den Fehler mal wieder nicht 😕

    //main.cpp
    
    #include <iostream>
    #include "Laden.h"
    using namespace std;
    
    int main(){
        const int MAXGELD=500;
        person(MAXGELD);
        return 0;
    }
    
    //Laden.h
    
    #ifndef LADEN_H_INCLUDED
    #define LADEN_H_INCLUDED
    
    class person{
        public:
            person(int maxgeld)
            :geld(maxgeld){
            }
        private:
            int geld;
    };
    
    #endif // LADEN_H_INCLUDED
    

    Irgendwie will das nicht so wie ich das möchte :s
    Ich denke die Fehlermeldungen sind hier nicht wichtig (für euch)

    Gruß



  • Skeptar schrieb:

    Ich denke die Fehlermeldungen sind hier nicht wichtig (für euch)

    Aber für dich. Es sei denn du willst keine Antwort.



  • Bashar schrieb:

    Aber für dich. Es sei denn du willst keine Antwort.

    Es war mir klar ich hätte es nicht reinschreiben sollen 😃
    Fehlermeldungen:

    MAXGELD hat eine vorherige Deklaration als const int MAXGELD
    in Konflikt stehende Deklarattion person MAXGELD

    werde daraus aber nicht schlau



  • Der Compiler nimmt an, du möchtest eine Instanz von person namens MAXGELD erstellen. Diesen Irrtum kannst du beheben, indem du vor ( einen Namen angibst oder die erstellte person zuweist.

    person(MAXGELD); // person MAXGELD; -> Konflikt / Fehler
    person a(MAXGELD); // ok
    person a = person(MAXGELD); // ok
    


  • Danke es geht 🙂
    Jedzt möchte ich dies einfach nur um eine Variable erweitern klappt aber nicht..
    (ich werde noch verrückt)

    #ifndef LADEN_H_INCLUDED
    #define LADEN_H_INCLUDED
    
    class person{
        public:
            person(int MAXGELD, int Preis)
            :geld(MAXGELD), preis(Preis){
            }
    
            /*void kauf(int anzahl){
                anzahl=anzahl;
            }*/
        private:
            int preis;
            int geld;
    };
    
    #endif // LADEN_H_INCLUDED
    
    #include <iostream>
    #include "Laden.h"
    using namespace std;
    
    int main(){
        const int MAXGELD=500, preis=70;
        person ablauf(MAXGELD, preis);
    
        cout << "Anzahl der Hosen eingeben(stk. 70 Euro): ";
        int anzahl=0;
        cin >> anzahl;
    
        return 0;
    }
    


  • Fehlermeldung/-beschreibung? 🙄



  • warnung: person::geld wird initialisiert nach
    Warnung: int person::preis
    warnung: when initialized here



  • Das ist nur eine Warnung. Du hast behauptet, es "klappt nicht".

    Die Warnung kommt daher, dass die tatsächliche Initialisierungsreihenfolge sich immer nach der Reihenfolge richtet, in der die Variablen in der Klasse deklariert sind; nicht nach der Reihenfolge, in der sie in der Initialisierungsliste aufgeführt sind.



  • Hmm danke 🙂
    Aber es hat ja nicht kompeliert -> es klappt nicht (für mich)
    Danke für die schneller Antwort 😃



  • Warnungen verhindern aber nicht das Compilieren, also hat es entweder compiliert oder es gab außer der Warnung noch Fehler (die du wieder unterschlagen hast 🙄).


Anmelden zum Antworten