Fehler beim kombilieren einer Klasse



  • darthdespotism schrieb:

    In die headerdatei (.hpp / .hxx / .h) kommt die Deklaration der Klasse. Also alle Variable und die Prototypen der Funktionen, die du verwendest.

    die definition der klasse 😉

    Ein Prototyp ist sowas wie

    int work(float data);
    

    also ohne die

    {
       // Dein Code
    }
    

    prototype heisst es in C, in c++ ists eine deklaration.

    sorry für den pedantismus



  • Um es genau zu nehmen ist ein Prototyp sowas

    int work(float);
    

    Sorry für den Pedantismus :p



  • Wo steht denn das der Parameter Name nicht im Prototyp auftauchen darf? (oder soll)
    Ich habe gelernt das man den weg lässt (weglassen kann) wenn der Sinn UNMISSVERSTÄNDLICH ist.
    Ansonsten schreibt man einen logischen Parameter Namen mit hinein.



  • Nope in der Decleration hat das ding nix zu suchen 🙂

    class Dummy
    {
        int m_i;
    
    public:
        Dummy(int i);
    
    public:
        void playAGame(const std::string&);
    
    public: 
        int getDaten() const { return m_i; }
    };
    
    Dummy::Dummy(int i) : m_i(i)
    {}
    
    void Dummy::playAGame(const std::string& player)
    {
        std::cout << player << std::endl;
    }
    

    ... um mal die Klasse von BorisDieKlinge zu ergänzen bzw korrigieren.



  • (D)Evil schrieb:

    Nope in der Decleration hat das ding nix zu suchen 🙂

    Falsch: In der Deklaration brauchst du den Parametern keinen Namen zu geben - aber es ist nicht verboten, welche anzugeben (auch wenn die nur zu Dokumentationszwecken genutzt werden können).



  • Um noch eins weiter zu gehen: Da man in der Regel gegen die Schnittstelle (sprich Header) und nicht die Implementierung programmieren sollte, macht es sogar viel Sinn im Header sinnvolle Benennungen mit anzugeben. Zumal man in manchen Fällen auch nur die Header zur Verfügung hat [z.B. dll's...].

    Und wenn man dann noch Dokumentation aus gleichen Gründen im Header macht, kann es sogar für eine sinnvolle Referenz (z.B. für Doxygen & Co) wichtig sein.

    cu André



  • nichts ist schlimmer, als nen schlonz wie

    int doHafTor(bool, bool, const char*, int, int, char);
    

    in nem header zu finden und weit keine doku, die das ganze anständig aufklärt. lieber anständige, selbsterklärende, parameternamen verwenden, überall wo ne deklaration oder implementierung auftaucht.



  • Also ich wollt des jetzt so machen:

    #include<iostream>
    #include<vertauscher.h>
    
           class vertauscher{
             int vertauscher::vertauscher(){
                 cout<<"Ein Objekt wurde erschaffen"<<endl;
             } ;   
    
        int vertauscher::einlesen()
        { 
    code.....
        } ;
    
        int vertauscher::ausgabe()
        {
    code..............
    
        };
      }
    

    Das ist dann in der vertauscher.ccp Datei.
    Und des sollte dann die vertauscher.h datei werden:

    #include<iostream>
    
    class vertauscher { 
    
        public:
    int dievariabelndieichbrauche;
           int  vertauscher::vertauscher();   
           int vertauscher::einlesen();
           int vertauscher::ausgabe();  
    };
    

    Die Fehler sind jetz "nur" noch parse error in method specification befor "void".

    Syntax error before "}" token.

    Cannot declare memberfunktion vertauscher::vertauscher::einlesen within vertauscher.

    Cannot declare memberfunktion vertauscher::vertauscher::ausgabe within vertauscher.

    Und dann is er noch confused by earlier errors,bailing out.



  • In der Klasse brauchst du nicht noch den Klassennamen vor die Funktionsnamen hängen. Außerdem kein Semikolon ";" nach den Funktionen.



  • Danke!!!
    Ich habe es dann doch noch hinbekommen:-)


Anmelden zum Antworten