Klassen Problem



  • Hi,

    ich hab das Problem, das ich bei dem unteren Code einen Fehler bekomm.

    [C++ Error] Termin.cpp(12): E2294 Structure required on left side of . or .*
    

    Wo liegt der Fehler, bzw wieso kann ich das nicht mit "Termin()" machen und dann einfach was zuweise, oder liegt der Fehler wo anders?

    class Termin
    {
    public:
    	Termin(const int datum);
    	Termin();
    	~Termin();
    
           	int GetDatum() const ;
    	void SetDatum(const int datum);
    
    private:
            int itsDatum;
    };
    
    Termin::Termin(const int datum)
    :itsDatum(datum)
    {}
    
    Termin::Termin()
    :itsDatum(5)
    {}
    
    Termin::~Termin()
    {}
    
    int Termin::GetDatum()  const
    {
            return itsDatum;
    }
    
    void Termin::SetDatum(const int datum)
    {
            itsDatum = datum;
    }
    
    int main()
    {
            Termin Eins(207);
            Termin Zwei();     //Error: Stricture rewuired on left side of . or .*
    
            cout << " 1: " << " " << Eins.GetDatum();
            cout << " 2: " << " " << Zwei.GetDatum();
    
            wait();   // ist in topse.h definiert
            return 0;
    }
    


  • Soll heißen:

    Termin Zwei;
    
    class Termin
    {
        int m_data;
    
    public:
        Termin(int date = 5) : m_data(data) {}
    
    public:
        int get_datum() const { return m_data; }
        void set_datum(int date) { m_data = data; }
    };
    

    Wäre evtl. etwas besser bzw. kürzer ...



  • danke für die schnelle Antwort.
    Ist natürlich so Praktischer 😉

    Allerdings funktioniert das leider nicht. Da

    data
    

    nicht deklariert ist.

    Ich habs mal so gemacht, allerdings bekomme ich nun den Error immer wenn ich nur
    Termin() aufruf

    Structure required on left side of . or .*
    
    class Termin
    {
        int m_data;
    public:
        Termin(int date = 5) : m_data(data) {}
    
    public:
        int data;
        int get_datum() const { return m_data; }
        void set_datum(int data) { m_data = data; }
    }
    
    int main()
    {
            int input, input2;
            cout << "Bitte Datum eingeben: ";
            cin >> input;
    
            cout << "Bitte Datum2 eingeben: ";
            cin >> input2;
    
            Termin Eins(2);     // ich kann hier nicht Termin Eins() aufrufen
            Termin Zwei(2);     // ich kann hier nicht Termin Zwei() aufrufen
            Eins.set_datum(input);
            Zwei.set_datum(input2);
    
            cout << " 1: " << " " << Eins.get_datum();
            cout << " 2: " << " " << Zwei.get_datum();
    
            wait();  
            return 0;
    }
    

    Gruß Folcan



  • Lass die Klammern mal weg. Das brauchst du beim default-konstruktor nicht. Der Compiler denkt sonst, das ist eine Funktionsdeklaration.
    Also

    Termin Eins;
    

    Im Konstruktor ist lediglich ein Schreibfehler. Der Parameter muß auch data heißen. Nach der deklaration von Termin fehlt noch ein Semikolon.



  • 😃 Upps den hab ich woll übersehen 😉
    thx. Funktioniert natürlich

    Gruß Folcan



  • class Termin
    {
        int m_data;
    
    public:
        Termin(int data = 5) : m_data(data) {}
    
    public:
        int get_datum() const { return m_data; }
        void set_datum(int data) { m_data = data; }
    };
    

    tss ein a statt e ...


Anmelden zum Antworten