String in Klasse deklarieren Error C2864



  • Du musst String entweder im Konstruktor initialisieren oder du benutzt C++11 und somit geschweifte Klammern, statt dem '='-Operator.

    Seit C++11 müsste das gehen.

    Nö.



  • Geht ganz einfach: Benutze keine C-strings (und printf).



  • Techel schrieb:

    ... (und printf).

    Das du auch falsch benutzt.



  • Kopiere die Fehlermeldung. Zeige den Code, der den Fehler produziert.

    Deine Member sind alle private. Du kannst sie also nicht außerhalb von Memberfunktionen (also hier nie) benutzen.

    Wenn dir das Buch printf beibringt, schmeiß es ins Altpapier.



  • Als allgemeienr Tipp, diese error codes kann man suchen. Es gibt einige Seiten die zu den codes passende Fehlermeldungen mit Beispielen zur verfügung stellen die zeigen was genau nciht geht und wie man das richtig machen kann. Ist bei einigen Fehlern durchaus sehr praktisch.



  • eine Member sind alle private. Du kannst sie also nicht außerhalb von Memberfunktionen (also hier nie) benutzen.

    Sindn im Code public...wie gesagt das ist nicht der ganze code sondern vereinfacht.

    Ratgeber schrieb:

    Du musst String entweder im Konstruktor initialisieren

    Habe ich zuvor schon versucht. Hat denselben Fehler ergeben. Ich hatte es in folgendem Schema:

    wort(){
        char String1[6] = "Hallo";
    };
    

    oder du benutzt C++11 und somit geschweifte Klammern, statt dem '='-Operator.

    Wie meinst du das?


  • Mod

    Gast1000 schrieb:

    Habe ich zuvor schon versucht. Hat denselben Fehler ergeben. Ich hatte es in folgendem Schema:

    wort(){
        char String1[6] = "Hallo";
    };
    

    So hast du eine lokale Variable in deinem Konstruktor definiert.



  • Gast1000 schrieb:

    eine Member sind alle private. Du kannst sie also nicht außerhalb von Memberfunktionen (also hier nie) benutzen.

    Sindn im Code public...wie gesagt das ist nicht der ganze code sondern vereinfacht.

    Das ist nicht vereinfacht sondern unbrauchbar.



  • Ratgeber schrieb:

    Seit C++11 müsste das gehen.

    Nö.

    Warum nicht?

    ~/test$ cat cppinit.cc 
    #include <iostream>
    
    struct wort { 
        char String1[6] = "Hallo"; 
        int strLen(); 
    }; 
    
    int main(){
        wort w;
        std::cout << w.String1 << "\n";
    }
    
    ~/test$ g++ -Wall -Wpedantic -std=c++11 cppinit.cc
    ~/test$ ./a.out 
    Hallo
    


  • wob schrieb:

    Ratgeber schrieb:

    Seit C++11 müsste das gehen.

    Nö.

    Warum nicht?

    Kann ich auch nicht nachvollziehen. Mit Clang funktioniert es genauso und VS2015 nimmt es auch. VS2013 scheint das feature noch nicht implementiert zu haben.


Anmelden zum Antworten