Weider n header Problem



  • Warum geht das den nicht?
    Fehler:
    -------------- Build: Debug in Bot ---------------
    Compiling: topics of conversation of Bot.cpp
    topics of conversation of Bot.cpp:7: error: expected constructor, destructor, or type conversion before '.' token
    topics of conversation of Bot.cpp:7: error: expected ,' or;' before '.' token
    Process terminated with status 1 (0 minutes, 0 seconds)
    2 errors, 0 warnings

    //topics of conversation of Bot.h
    #ifndef TOPICS_OF_CONVERSATION_OF_BOT_H_INCLUDED
    #define TOPICS_OF_CONVERSATION_OF_BOT_H_INCLUDED
    
    #include <string>
    #include <vector>
    
    extern std::vector<std::string> gruss;
    
    #endif
    
    //topics of conversation of Bot.cpp
    #include "topics of conversation of Bot.h"
    #include <string>
    #include <vector>
    using namespace std;
    
    vector<string> gruss;
    gruss.push_back("Hello");
    


  • Und wo ist deine FUnktion? Du kannst doch nicht einfach die push_back-Anweisung lose irgendwo reinschreiben. Das gehört immer in eine Funktion oder Methode.



  • Hallo

    Zumindest die main-Funktion sollte schon da sein.

    chrische



  • Warum machst du eigentlich globale Variablen? Meistens kommt man ohne solche aus. Aber falls du es unbedingt machen willst, willst du anscheinend einfach deine Variable gruss initialisieren? Dann wäre sowas sinnvoll:

    // xyz.cpp
    #include "Bot.h"
    
    void init_gruss()
    {
        gruss.push_back("Hallo");
    }
    
    int main()
    {
        init_gruss();
        // restlicher programmverlauf...
    }
    


  • Ja mh eine main hab ich natürlich schon ich hab halt jetzt nur das rauskopiert. Ich wollte halt einfacch in einer headre und cpp meine vetor string initialisieren..... oder kann ich meine vector strings auch nur in einer header deklarieren und dann initialisieren?



  • Ja, ja das Weidern header Problem, wer kennt das nicht.



  • Es hat nichts mit Vector zu tun. Du solltest dir bewusst werden, das Vector, int, short und deine eigenen Klassen, einfach TYPEN sind. Wenn du eine cpp-Datei hast, ist es ein Modul, eine Compile-Einheit. Headerdateien die du inkludierst, werden 1:1 eingefügt. Ein "#include" bewirkt, das die Datei 1:1 reinkopiert wird. Du könntest genauso gut im Texteditor den gesamten Textinhalt von einer Header-Datei markieren, kopieren (Strg+C) und anstelle des "#include" einfügen (Strg+V).

    Du willst aber eine initialisierung einer einmalig vorhandenen Variable (in deinem Fall "gruss") nur einmal haben. Wenn du sie in einem Header hättest, würde sie in jeder Compile-Einheit auftauchen. Nicht gerade gewollt, oder?


Anmelden zum Antworten