Fehlermeldung bei globalem vector-Objekt vom Typ string



  • Hi(gh)!

    Um die Fehlermeldungen in meinem im Entstehen begriffenen Grafikanalyseprogramm "yaigat" ("Yadgar's Artificial Intelligence Graphics Analysis Tool") übersichtlicher verwalten zu können (und das sie aufnehmende vector-Objekt nicht jedesmal an jede Funktion, die gegebenenfalls jeweilige Fehlermeldung ausgeben soll übergeben zu müssen), will ich ein vector-Objekt vom Typ string global anlegen, wo ich dann mit dem allmählichen Ausbau des Programms per push_back()-Methode die neu hinzukommenden Fehlermeldungen anfüge.

    Leider spielt g++ nicht mit, ich bekomme immer die Fehlermeldung
    "‘errormsgs’ does not name a type"

    Was denn für ein Typ?

    Bis bald im Khyberspace!

    Yadgar



  • @Yadgar sagte in Fehlermeldung bei globalem vector-Objekt vom Typ string:

    Leider spielt g++ nicht mit, ich bekomme immer die Fehlermeldung
    "‘errormsgs’ does not name a type"

    Es wäre ja echt leichter, wenn du den Quellcode gleich mitposten würdest, der den Fehler verursacht. Du hast da vermutlich einen Syntaxfehler, durch den dein Variablenname errormsgs an einer Stelle steht, wo C++ eine Typbezeichnung erwarten würde. Daher wird der Name als Typ geparst und C++ meckert, dass dieser nicht deklariert wurde.

    Oder errormsgs soll tatsächlich ein Typ sein und du verwendest diesen, bevor dieser deklariert wurde (?).



  • @Finnegan sagte in Fehlermeldung bei globalem vector-Objekt vom Typ string:

    Es wäre ja echt leichter, wenn du den Quellcode gleich mitposten würdest, der den Fehler verursacht. Du hast da vermutlich einen Syntaxfehler, durch den dein Variablenname errormsgs an einer Stelle steht, wo C++ eine Typbezeichnung erwarten würde. Daher wird der Name als Typ geparst und C++ meckert, dass dieser nicht deklariert wurde.

    Oder errormsgs soll tatsächlich ein Typ sein und du verwendest diesen, bevor dieser deklariert wurde (?).

    Voilà:

    // yaigat - Yadgar's Artificial Intelligence Graphics Analysis Tool
    
    #define STBI_NO_BMP
    #define STBI_NO_PSD
    #define STBI_NO_HDR
    #define STBI_NO_PIC
    #define STBI_NO_PNM
    
    
    #include <stdlib.h>
    #include <iostream>
    #include <string.h>
    #include <vector>
    #define STB_IMAGE_IMPLEMENTATION
    #include <stb/stb_image.h>
    #define STB_IMAGE_WRITE_IMPLEMENTATION
    #include <stb/stb_image_write.h>
    
    
    using namespace std;
    
    // GLOBALE KONSTANTEN
    
    const string auml = "ä";
    const string Auml = "Ä";
    const string ouml = "ö";
    const string Ouml = "Ö";
    const string uuml = "ü";
    const string Uuml = "Ü";
    const string szlig = "ß";
    const string eacute = "é";
    const string Eacute = "É";
    const string egrave ="è";
    const string Egrave ="È";
    
    // GLOBALE VARIABLEN
    
    vector<string> errormsgs; // Liste der Fehlermeldungen
    errormsgs.push_back("Befehl unbekannt!"); // in parse()
    

    Innerhalb von main() macht eine andere vector-Instanz dagegen kein Problem:

    int main(int argc, char* argv[])
    {
      vector<string> commands; // Liste der Befehle in yaigat
      commands.push_back("-help");
      commands.push_back("-e");
      commands.push_back("-engine");
      commands.push_back("-p");
      commands.push_back("-prompt");
      commands.push_back("-pm");
      commands.push_back("-promptmagic");
      commands.push_back("-rs");
      commands.push_back("-randomseed");
      commands.push_back("-fs");
      commands.push_back("-fixedseed");
      commands.push_back("-m");
      commands.push_back("-model");
      commands.push_back("-rt");
      commands.push_back("-runtime");
      commands.push_back("-w");
      commands.push_back("-weight");
      commands.push_back("-s");
      commands.push_back("-style");
      commands.push_back("-a");
      commands.push_back("-average");
      commands.push_back("-as");
      commands.push_back("-averagesequence");
      commands.push_back("-c");
      commands.push_back("-count");
      commands.push_back("-cq");
      commands.push_back("-countquotient");
    

    Warum?



  • Die Fragen von @Yadgar sind doch Spam... Ich kann hier keine gebotene Sorgfalt erkennen.

    Es tritt ein Fehler auf... ja, toll. Weder die genaue Fehlermeldung, noch der Code, noch der Kontext wird angegeben.

    @Yadgar Sollen das nur Provokationen sein?

    @Yadgar sagte in Fehlermeldung bei globalem vector-Objekt vom Typ string:

    Innerhalb von main()

    Wo ist die schließende Klammer?


  • Mod

    errormsgs.push_back("Befehl unbekannt!");

    Das steht im Nirgendwo. Lektion 0 in C++: Code muss in Codeblöcken stehen. Vielleicht möchtest du dir mal angucken, wie man die Werte von Vectoren bei deren Definition setzt? Oder noch viel besser: Vermeide Anti-Patterns wie veränderliche globale Objekte gleich ganz. Da wirst du nur unglücklich mit.


Anmelden zum Antworten