Prob mit Set Methoden



  • Moin... hab das vorhin geschrieben und kann das absolut keinen Fehler erkennen. Bei SetNr sagt der Compiler allerdings immer "request for member`SetNr`in`PC`,wich is of class CArtikel

    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    class CArtikel                          //BASIKLASSE
    {
          private: char m_name[32];
                   long m_inventnr;
                   double m_vkpreis;
                   double m_tax;
                   double m_gzuschlag;
          public: CArtikel(); //Konstruktor
                  ~CArtikel();
                  char* GetName(void);
                  void SetName(char* );
                  long GetNr(void);
                  void SetNr(long);
                  double GetPreis(void);
                  void SetPreis(void);
                  double GetTax(void);
                  void SetTax(double);
                  double GetGZuschlag(void);
                  void SetZuschlag(double);
    };
    class CGeraet:public CArtikel             //1.Verebung
    {
           private: double m_selbskosten;
           public: CGeraet(double,double);//Name,Inevntarnummer,Selbskosten,gzuschlag
                   void SetSelbstko(double);
                   double GetSelbstko(void);
    };
    class CMedium:public CArtikel           //2.Vererbung
    {
          private: double m_ekpreis;
          public: void SetEkp(double);
                  double GetEkp(void);
    };
    CArtikel::CArtikel(){}
    void CArtikel::SetNr(long N){m_inventnr=N;}                                        
    long CArtikel::GetNr(void){return m_inventnr;}
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        cout<<"läuft";
        CArtikel PC();    
        PC.SetNr(1);
    

    <---hier ist der immer am stressen

    system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • ich würd mich versch. dateien arbeiten

    btw only

    was ich sehe

    unten hast du

    void CArtikel::SetNr(long N){m_inventnr=N;}
    

    also

    SetNr(long N)
    

    in der klasse hast du

    void SetNr(long);
    

    sollte aber

    SetNr(long N)
    

    heissen



  • Wenn ich das so wie du mache dann gibt der mir noch mehr Fehler in der Klasse selber aus... so gobt der mir nur en Fehler bei der aufgerufennen Set Methode auf und die sollte doch eigtnlcih richtig sein oder????


  • Mod

    klassischer fehler:

    CArtikel PC();
    

    ist eine funktionsdeklaration, keine variablendefinition. lass die klammern weg.

    void SetNr(long);
    

    das ist ok, parameternahmen ignoriert der compiler in deklarationen sowieso. ich würde mich eher über das void bei parameterlosen funktionen ärgern.



  • hab das ganze nochmal verändert. Es funktioniert irgendwie keine Methode

    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    class CArtikel                          //BASIKLASSE
    {
          private: char m_name[32];
                   long m_inventnr;
                   double m_vkpreis;
                   double m_tax;
                   double m_gzuschlag;
          public: CArtikel(); 
                  CArtikel(long);         //Konstruktor
                  ~CArtikel();
                  char* GetName(void);
                  void SetName(char* );
                  long GetNr(void);
                  void SetNr(long);
                  double GetPreis(void);
                  void SetPreis(void);
                  double GetTax(void);
                  void SetTax(double);
                  double GetGZuschlag(void);
                  void SetZuschlag(double);
    };
    class CGeraet:public CArtikel             //1.Verebung
    {
           private: double m_selbskosten;
           public: CGeraet(double,double);//Name,Inevntarnummer,Selbskosten,gzuschlag
                   void SetSelbstko(double);
                   double GetSelbstko(void);
    };
    class CMedium:public CArtikel           //2.Vererbung
    {
          private: double m_ekpreis;
          public: void SetEkp(double);
                  double GetEkp(void);
    };
    CArtikel::CArtikel(){}
    CArtikel::CArtikel(long n)
    {
    m_inventnr=n;
    }
    void CArtikel::SetNr(long N){m_inventnr=N;}                                        
    long CArtikel::GetNr(void){return m_inventnr;}
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int M;
        cout<<"läuft";
        CArtikel PC();
        M=PC.GetNr();
        cout<<M;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    da sagt er mir bei GetNr es wäre en Fehler 😡



  • @Marcilo:
    Und wenn du den Dtor schon deklariert hast, solltest du ihn auch noch definieren. Wobei hier der Standard-Destruktor vollkommen ausreicht.

    Caipi



  • ja aber davor sollten erstmal die Methoden gehen und die laufen nich :(((



  • EDIT: camper hat Recht!


  • Mod

    habs doch schon erklärt...



  • OK jetzt hab ich es gerafft vielen Dank


Anmelden zum Antworten