konsolen-anwendung - problem beim kompilieren



  • Moin,

    also ich habe mich daran gemacht ein Programm zu schreiben um endlich die ganzen Medien, die bei mir zu Hause stehen zu registrieren. Es soll eine Konsolen-Anwendung werden (ich könnte zwar auch eine GUI, ich finde aber, dass das ziemlich überflüssig ist 😉 ).
    Hierbei arbeite ich mit dem QT-Creator (der Annehmlichkeiten halber 🙂 ).

    Zum eigentlichen Problem:
    Ich habe eine Klasse erstellt genannt libaryObject.h. So jetzt schreibe ich den Code der Funktionen nicht in der .h, sondern in der .cpp. Gesagt getan und auf einmal erscheint eine Fehlermeldung: "C:\Users\R.Paul Wilhelm\Desktop\Programmieren\qt\libarymanagment\libarymanagment-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2010__Qt_SDK__Debug\..\libarymanagment\libaryobject.cpp:10: Fehler:C2761: 'std::string libaryObject::name': Die erneute Deklaration der Memberfunktion ist unzul„ssig"

    Und ich weiß nicht, was ich mit der Fehlermeldung anfangen soll, denn es handelt sich hierbei um folgenden Quelltext:
    .cpp:

    libaryObject::libaryObject()
    {
        string libaryObject::name = "";
        string libaryObject::author = "";
        string libaryObject::place = "";
        bool libaryObject::here = false;
        int libaryObject::position = -1;
    }
    

    .h:

    class libaryObject
    {
    public:
        libaryObject();
        void getName();
        void getAuthor();
        void getPlace();
        void getHere();
        void getAll();
        int getPosition();
        void setName(string name);
        void setAuthor(string author);
        void setPlace(string place);
        void setHere(bool here);
        void setAll(string name, string author, string place,
                    bool here, int position);
        void setPosition(int position);
    private:
        string name;
        string author;
        string place;
        bool here;
        int position;
    };
    

    Könnte mir da jemand helfen (es ist bestimmt irgendein total stumpfer Fehler, nur seh ich ihn nicht 😞 )??? 😕

    Gruß Paul!



  • libaryObject::libaryObject()
    :
     here(false), 
     position(-1) 
    { 
    }
    

    Mehr brauchst du nicht (siehe Initialisierungsliste).

    Und wenn du keinen C++11-Compiler dein Eigen nennst, würde ich die string Übergaben noch einmal überdenken.



  • Die Fehlermeldung ist weg, danke! 🙂

    Und wenn du keinen C++11-Compiler dein Eigen nennst, würde ich die string Übergaben noch einmal überdenken.

    Was meinst du mit String-Übergaben? Soll ich einen anderen Datentyp nutzen (QString) oder meinst du die Sache mit cout?



  • Er meint die Übergabe als Kopie.



  • Joh danke Leute! 🙂
    Hab die Fehler eliminieren können und kann nun fortschreiten... 🙂



  • void setAll(const string& name, const string& author, const string& place,
                    bool here, int position); 
    
    // usw...
    


  • Ich habe weiter gearbeitet an dem Programm und es ist eigentlich alles ganz gut gelaufen, bis hier:

    fstream fObjectDetails;
    fObjectDetails.open("C:\\fObjectDetails.txt", ios::in | ios::out | ios::ate);
    

    Wenn ich nun das Programm kompiliere erscheinen die Fehlermeldungen:
    "8 C:\Users\R.Paul Wilhelm\Desktop\Programmieren\C++\libarymanagment.cpp expected constructor, destructor, or type conversion before '.' token"
    "8 C:\Users\R.Paul Wilhelm\Desktop\Programmieren\C++\libarymanagment.cpp expected ,' or;' before '.' token"

    Vor diesem Code stehen an sich nur die includes und danach steht anderer Code, der aber bei vorhergehenden Kompilier-Vorgängen mir keine Fehler eingebracht hat.
    Ich weiß nicht was der Fehler sein könnte, weil an sich sieht der Code doch richtig aus... 😕



  • Edit:
    Ich habe gerade folgenden Code eingegeben (anstelle des vorhergehenden):

    fstream fObjectDetails("C:\\fObjectDetails.txt", ios::in | ios::out | ios::ate);
    

    Es kommt keine Fehlermeldung mehr. 😃 Aber nun meine Frage:
    Warum funktioniert das und mein anderer Code nicht? 😮



  • Hast du beim nicht funktionierenden Beispiel ein #include <fstream> vergessen?



  • Butterbrot schrieb:

    Hast du beim nicht funktionierenden Beispiel ein #include <fstream> vergessen?

    nein hab ich nicht


Log in to reply