Definition von Klassen



  • Hallo schreibe morgen eine Schulaufgabe über dieses Thema und komme bei meinem Programm leider nicht weiter.
    Bekomme immer die Fehlermeldung Deklaration nicht ordnungsgemäß abgeschlossen E2040
    Könntet ihr mir da weiter helfen??

    //---------------------------------------------------------------------------
    
    #pragma hdrstop
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    
    //---------------------------------------------------------------------------
    class Mitarbeiter
    {
        private:
            char name[50];
            int gehalt;
    
        public:
            Mitarbeiter(char *nname, int ngehalt)
            {
                strcpy(name,nname);
                gehalt = ngehalt;
            };
            int Datenausgabe(void)
            {
                 printf("\nMA: %20s - GH: %5d", name, gehalt);
                 return 0;
            };
    };
    //---------------------------------------------------------------------------
    class Angestellter: public Mitarbeiter
    {
        private:
            int urlaubsgeld;
    
        public:
            Angestellter(char *nname, int ngehalt, int nurlgeld)
            : Mitarbeiter(nname, ngehalt)
            {
                urlaubsgeld = nurlgeld;
            };
            int Datenausgabe(void)
            {
                 Mitarbeiter::Datenausgabe();
                 printf("   - UG: %5d", urlaubsgeld);
                 return 0;
            };
    };
    //---------------------------------------------------------------------------
     class Manager: public Angestellter
    {
        private:
            int provision;
    
        public:
            Manager(char *nname, int ngehalt, int nurlgeld, int nprov)
            :Angestellter(nname,ngehalt,nurlgeld)
            {
                provision = nprov;
            };
            int Datenausgabe(void)
            {
                 Mitarbeiter::Datenausgabe();
                 printf("   - PR: %5d", provision);
                 return 0;
            };
    
    //---------------------------------------------------------------------------
    #pragma argsused
    int main(int argc, char* argv[])
    {
        Mitarbeiter MA1("Christian Reng", 3500);
        MA1.Datenausgabe();
    
        Angestellter MA2("Thomas Gold", 4500, 1000);
        MA2.Datenausgabe();
    
        Manager MA3("Michael Silber", 4500, 1000, 1000);
        MA3.Datenausgabe();
    
        setbuf(stdout,NULL);
        getch();
        return 0;
    }
    //---------------------------------------------------------------------------
    

    [edit]Bitte Code-Tags verwenden![/edit]



  • In der Klasse Manager fehlt eine schliessende geschweifte Klammer '}' ....



  • Joe_M. schrieb:

    In der Klasse Manager fehlt eine schliessende geschweifte Klammer '}' ....

    Unter anderem...

    //---------------------------------------------------------------------------
    
    #pragma hdrstop 
    #include <string.h> 
    #include <stdio.h> 
    #include <conio.h> 
    
    //--------------------------------------------------------------------------- 
    class Mitarbeiter
    { 
    private: 
    char name[50]; 
    int gehalt; 
    
    public:
    Mitarbeiter(char *nname, int ngehalt)
    {
    strcpy(name,nname);
    gehalt = ngehalt; 
    }
    int Datenausgabe(void) 
    { 
    printf("\nMA: %20s - GH: %5d", name, gehalt); 
    return 0; 
    }
    };
    //---------------------------------------------------------------------------
    class Angestellter: public Mitarbeiter 
    { 
    private: 
    int urlaubsgeld; 
    
    public:
    Angestellter(char *nname, int ngehalt, int nurlgeld)
    : Mitarbeiter(nname, ngehalt) 
    {
    urlaubsgeld = nurlgeld; 
    }
    int Datenausgabe(void) 
    { 
    Mitarbeiter::Datenausgabe(); 
    printf(" - UG: %5d", urlaubsgeld);
    return 0; 
    }
    };
    //--------------------------------------------------------------------------- 
    class Manager: public Angestellter 
    { 
    private: 
    int provision; 
    
    public: 
    Manager(char *nname, int ngehalt, int nurlgeld, int nprov) 
    :Angestellter(nname,ngehalt,nurlgeld)
    {
    provision = nprov;
    }
    int Datenausgabe(void) 
    { 
    Mitarbeiter::Datenausgabe(); 
    printf(" - PR: %5d", provision); 
    return 0; 
    }
    };
    
    //--------------------------------------------------------------------------- 
    #pragma argsused 
    int main(int argc, char* argv[])
    {
    Mitarbeiter MA1("Christian Reng", 3500);
    MA1.Datenausgabe();
    
    Angestellter MA2("Thomas Gold", 4500, 1000);
    MA2.Datenausgabe();
    
    Manager MA3("Michael Silber", 4500, 1000, 1000);
    MA3.Datenausgabe();
    
    setbuf(stdout,NULL);
    getch();
    return 0;
    }
    //--------------------------
    


  • Hallo,

    Das ist ja ne ziemliche Mischung von C und C++. Vielleich lieber so.

    #include <string>  // statt string.h
    #include <iostream>  // für alle Ein/Ausgabeoperationen
    #pragma hdrstop      // nur wenn precompiled Header verwendet werden
    
    using namespace std;  // öffnen von Namespace Standard
    //--------------------------------------------------------------------------- 
    class Mitarbeiter 
    { 
        private: 
            std::string name; // bitte kein char* wenns nicht nötig ist
            int gehalt; 
    
        public: 
            Mitarbeiter(const std::string &nname, int ngehalt) : name(nname), gehalt(ngehalt) {} // bei Konstruktoren lieber Initialisierunglisten verwenden
            void Datenausgabe()
            { 
                 cout <<  "\nMA: " << name << " - GH: " << gehalt << endl;
    // endl macht Zeilenumbruch und flush, Bei Bedarf weglassen
            }
    }; 
    //--------------------------------------------------------------------------- 
    class Angestellter: public Mitarbeiter 
    { 
        private: 
            int urlaubsgeld; 
    
        public: 
           Angestellter(const std::string &nname, int ngehalt, int nurlgeld) : Mitarbeiter(nname, ngehalt),
                                            urlaubsgeld(nurlgeld) {}
            void Datenausgabe(void)
            { 
                 Mitarbeiter::Datenausgabe(); 
                 cout <<  "   - UG: " << urlaubsgeld  << endl;
            };
    }; 
    //--------------------------------------------------------------------------- 
    
    class Manager: public Angestellter
    { 
        private: 
            int provision; 
    
        public: 
            Manager(const std::string &nname, int ngehalt, int nurlgeld, int nprov) : Angestellter(nname,ngehalt,nurlgeld),
                            provision(nprov) {}
            void Datenausgabe(void)
            { 
                 Mitarbeiter::Datenausgabe(); 
                 cout <<  "   - PR: " << provision  << endl;
            }
    };
    
    //--------------------------------------------------------------------------- 
    int main(int argc, char* argv[])
    { 
        Mitarbeiter MA1("Christian Reng", 3500); 
        MA1.Datenausgabe(); 
    
        Angestellter MA2("Thomas Gold", 4500, 1000); 
        MA2.Datenausgabe(); 
    
        Manager MA3("Michael Silber", 4500, 1000, 1000); 
        MA3.Datenausgabe(); 
    
        cin.get();
        return 0; 
    } 
    //---------------------------------------------------------------------------
    

    😞 Entschuldingung liebe Moderatoren für den Quelltext.

    Für den OP:
    Bitte ein gutes C++ Tutorial durcharbeiten (siehe C++ Forum)

    Sayonara


Anmelden zum Antworten