Nicht nachvollziehbar: request for member which is of non-class type



  • Ich habe versucht den Code möglichst auf mein Problem zu reduzieren, er ist aber trotzdem noch kompilierbar, wenn man folgendes tut:

    1.) Kommentar vor "date(int ist_egal): day(1){}" im Header aufheben

    #ifndef NAME_DES_HEADERS_HPP
    #define NAME_DES_HEADERS_HPP
    
        class date 
        {   int day;
         public:
            int get_day() {day;}
            date(): day(1){}
            //date(int ist_egal): day(1){} //so würde es funktionieren
    
        };
    
    #endif
    

    und:
    2.) Kommentar vor "date test(23234);" aufheben "date test();" löschen/auskommentieren

    #include <cstdlib>
    #include <iostream>
    #include "date.hpp"
    
    using namespace std;
    
    int main()
    {
        date test();
        //date test(23234); //in .hpp Kommentar aufheben und es funzt so
        cout << test.get_day() << endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Ansonsten wird vom Compiler (Benutze als IDE DevC++ mit dem Mingw Compiler) folgende Fehlermeldung geliefert:

    Zeile 11 in main.cpp(s.o.): request for member `get_day' in `test', which is of non-class type `date ()()'

    Ich verstehs nicht, warum?



  • Hi, mache in Zeile 9 die Klammern weg, sonst denkt der Compiler es wäre eine Funktionsdeklaration ...



  • Verflixt und ich hab mir einen abgebrochen und die Lösung ist simpel und einleuchtend, super, vielen Dank!!!



  • Übrigens solltest du in der get_day() auch einen Wert zurückgeben: int get_day() { return day; } . (der Ausdruck day; ist zwar eine legale Anweisung, bewirkt jedoch gar nichts)


Anmelden zum Antworten