String array



  • Hi Leute
    Ich versuch eine string array zu machen aber bei mir funktioniert das nicht wie macht man das am besten ich habs so versucht:
    std::string liste[] = {"int", "string", "wstring", "bool", "INT:", "STRING:", "WSTRING:", "BOOL:"};



  • Bei std::string geht das so nicht. Da musst du die Werte einzeln Eintragen.



  • gibt es irgend eine möglichkeit eine liste zu erstellen ich gebs bald auf 😡



  • std::list<std::string> strlist;
    strlist.push_back("String1");
    strlist.push_back("String2");
    // etc.
    


  • geht nicht da kommt:

    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|9|error: expected constructor, destructor, or type conversion before ‘<’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|10|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|11|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|12|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|13|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|14|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|15|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|16|error: expected constructor, destructor, or type conversion before ‘.’ token|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|17|error: expected constructor, destructor, or type conversion before ‘.’ token|
    ||=== Build finished: 9 errors, 0 warnings ===|
    


  • gamebuntu schrieb:

    Hi Leute
    Ich versuch eine string array zu machen aber bei mir funktioniert das nicht wie macht man das am besten ich habs so versucht:
    std::string liste[] = {"int", "string", "wstring", "bool", "INT:", "STRING:", "WSTRING:", "BOOL:"};

    Komisch. Bei mir geht das.

    Da aber std::string kein "Literal-Typ" (C++0x-sprech) wird so etwas immer dynamisch initialisiert, auch, wenn Du es außerhalb von Funktionen definierst. Als Zeichenketten-Lookup-Tabelle -- also, wenn die Strings nicht verändert werden müsse -- finde ich so etwas noch sehr praktisch:

    char const* const list[] = {"La", "Le", "Lu"};
    


  • bEI MIR KOMMT DANN DAS:

    obj/Debug/lexer/variable.o||In function `__tcf_0':|
    /media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|9|multiple definition of `liste'|
    obj/Debug/lexer/lexer.o:/media/nico_/sicherung/ubuntu/Projekt/c lite/lexer/variable.h|9|first defined here|
    ||=== Build finished: 2 errors, 0 warnings ===|
    


  • gamebuntu schrieb:

    multiple definition of `liste'

    Ja dann halte Dich doch einfach an die ODR. Beachte da Punkt 2. Du hast scheinbar die Liste in einem Header definiert und diesen in mehreren "translation units" eingebunden.



  • das komme ist das ich mich daran halte nirgendst wo anderes im Quelltext ist solch eine definition noch;



  • ich habs herrausgefunden ich hab das in der variable.h rein gemacht aber ich darf nur in variable.cpp das so definieren.

    @krümelkacker:
    Ich benutze C++0x schon obs einen unterschied macht sehe ich momentan nicht.



  • gamebuntu schrieb:

    das komme ist das ich mich daran halte nirgendst wo anderes im Quelltext ist solch eine definition noch;

    😮 😕 😕
    *massive syntax error*
    Ich hoffe, dein C++-Code ist besser 😉

    Gruß,

    Simon2.


Anmelden zum Antworten