Problem bei Initialisierung einer Klassenfunktion



  • Hallo,
    hab folgendes Problem:
    hab dafür in einer header datei eine klasse und und in einer cpp-datei mit dem selben namen(eule.h eule.cpp) die definition des konstruktors und einer anderen funktion. die andere funktion soll nur eine variable des objektes zurückwerfen. die main ist in einer dritten datei.
    bei der definition der anderen klassenfunktion meckert er:
    ISO C++ forbids declaration of 'getData' with no type
    dabei hab ich den typ in der deklaration in der .h datei angegeben. und meine definition der funktion lautet nur:

    eule::getData() //hier taucht der fehler auf
    {
                  return fluegel;
    }
    

    deklariert ist die ganze geschicht in etwa so

    class eule
    {
          private:
                  int fluegel;
                  string augenfarbe;
          public:
                 eule();
                 int getFluegel();
    };
    

    ziemlich uninteressantes programm also. soll nur funktionieren. hab überlegt obs vielleicht an den verlinkungen der dateien untereinander liegen könnte.
    hab in der cpp-datei, in der auch die main liegt
    #include "eule.h"
    #include "eule.cpp"
    und in der eule.cpp datei nochmal:
    #include "eule.h"

    würde mich über jeden tipp freuen



  • Schau dir mal den ersten Codebrocken an... Wie wär's, wenn du die Methode nicht als getData, sondern als getFluegel bezeichnest? Außerdem fehlt das int. Also:

    int eule::getFluegel()
    {
                  return fluegel;
    }
    


  • muss mich verbessern, die funktion ist auf die diese weise bezeichnet, habe nur etwas falsches hier rein kopiert. richtig heisst es natürlich 'getFluegel', funktioniert aber leider trotzdem nicht...



  • ja, richtig, das int. daran lag es schließlich. danke sehr

    habe kürzlich ein borland c++ builder programm geschrieben wo ich als int deklarierte klassenfunktionen einfach durch NameDerKlasse::NameDerFunktion(/.../)
    {/.../}
    initialisiert habe, was kein Problem dargestellt hat.

    gibt es da irgend eine sache, die ich beachten sollte, bzw einen ausnahmefall bei dem es nötig, bzw. nicht nötig ist den datentyp in die deklaration zu schreiben?!



  • Dagobi schrieb:

    gibt es da irgend eine sache, die ich beachten sollte, bzw einen ausnahmefall bei dem es nötig, bzw. nicht nötig ist den datentyp in die deklaration zu schreiben?!

    Abgesehen von Konstruktoren und Destruktoren muss der immer dazu.



  • Dagobi schrieb:

    gibt es da irgend eine sache, die ich beachten sollte

    Jep, getFluegel() konstant machen! 🙂



  • namespace animals
    {
        class Owl
        {
        public:
            Owl() : m_wings(0), m_eyecolor("blue")
            {}
    
        private:
            unsigned short m_wings;
            std::string    m_eyecolor;
    
        public:
            unsigned short get_wings() const { return m_wings; };
        };
    };
    

    ? 😉 Aber die Augenfarbe sollte man enummerieren.


Anmelden zum Antworten