[Noobie] Problem mit Klassen



  • #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    class Employee
    {
     private:
     int itsAge;
     public:
     int GetAge() const;
     void SetAge(int age);
    };
    
    Employee::SetAge(int age)
    {
     age=itsAge;
    }
    
    Employee::GetAge() const
    {
     return itsAge;
    }
    
    int main()
    {
     Employee Peter;
     Peter.SetAge(25);
     cout << "Peter ist >> " << Peter.GetAge() << " << Jahre alt!";
     getch();
    }
    

    Bei diesem Code bekommen ich folgenden Compiler-Fehler:

    [C++ Fehler] hello.cpp(16): E2316 'Employee::SetAge(int)' ist kein Element von 'Employee'

    Warum? Bei GetAge() gehts doch auch, oder?

    und muss ich in Zeile 17 schreiben:

    itsAge=age;

    oder so wies schon dasteht?

    danke 🙂



  • Puh...der ganze code ist ein wenig buggy...
    also dir fehlen bei den deklarationen mal die rückgabewerttypen:
    void und int...
    und es muss itsAge=age;
    ist ja logisch willst ja dem Attribut was zuweisen 😉

    Hier das funktioniert...

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    class Employee
    {
     private:
     int itsAge;
     public:
     int GetAge();
     void SetAge(int age);
    };
    
    void Employee::SetAge(int age)
    {
     itsAge=age;
    }
    
    int Employee::GetAge()
    {
     return itsAge;
    }
    
    int main()
    {
     Employee Peter;
     Peter.SetAge(25);
     cout << "Peter ist >> " << Peter.GetAge() << " << Jahre alt!";
     getch();
    }
    


  • ach natürlich 😃 wie blöd von mir ^^ danke 😘



  • Hallo

    Bitte beachte : Wenn dein Problem nicht mit VCL-spezifischen Klassen/Funktionen zu tun hat (AnsiString, TEdit...) gehört deine Frage ins C++ Forum.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • und das es so schöner ausschaut 😃 Und das using namespace nicht in einen Header gehört ...

    #if !defined (EMPLOYEE_H__INCLUDED)
    #define EMPLOYEE_H__INCLUDED
    
    class Employee
    {
    public:
        Employee(const unsigned short age) : m_nAge(age) {}
    
    private:
        unsigned short m_nAge;
    
    public:
        unsigned short get_age() const { return m_nAge; }
        void set_age(const unsigned short age) { m_nAge = age; }
    };
    
    #endif // EMPLOYEE_H__INCLUDED
    
    #include <iostream>
    #include "Employee.h"
    
    int main()
    {
        Employee Peter(25);
        std::cout << "Peter ist " << Peter.get_age() << " Jahre alt!" << std::endl;
    }
    

Anmelden zum Antworten