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
errormsgsan 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
errormsgssoll 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
errormsgsan 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
errormsgssoll 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?
-
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.