char-Arrays im Konstruktor



  • Abend,

    Ich habe gegoogelt, die Suchfunktion benutzt, finde aber trotzdem keine Antwort auf meine Frage. (Für die, die gerne anfangen zu meckern)

    Meine eigentliche Frage:

    Wie kann ich ein char-Array in einem Konstruktor erzeugen lassen?
    (ja, simple Frage, habe warscheinlich auch deswegen keine Antwort auf sie gefunden, da sie so simpel ist)

    Beispiel:

    class C_Spieler
    {
    	private:
                    char s_Name[];
    
    	public:
    		C_Spieler()
    		{
    			s_Name[]="XXXXXXX";
    		}
    .
    .
    .
    .
    

    Hier würde mir der Compiler einen Fehler auswerfen.
    Verstehe aber nicht, was ich falsch mache,
    In der main-Funktion könnte ich ja auch zb. schreiben:

    char s_Name[]="XXXXXXXXXXX";
    

    und es würde klappen...
    Kann mir bitte jamand bei dem Problem helfen?

    Grüße,
    Gast268 (fand die Zahl so schön...)



  • Sofern ich mich nicht irre und du nicht an einer anderen stelle der klasse sagst, wie groß das char-datenfeld ( -> [] <- ) sein soll, würde ich mal sagen, der PC möchte gerne beim erstellen des datenfeldes wissen, wieviel speicher der pc für dieses datenfeld reservieren soll. Und zum 2.ten würde ich bei setzen eines wertes in das datenfeld dem kompiler auch sagen, an welcher stelle im datenfeld (index) der wert positioniert werden soll

    Beispiele:
    Richtiges Erstellen
    typ Name[Grösse];
    string Bla[100];

    Werte zuweisen:
    Name[Index] = Wert;
    Bla[45] = "Blubb";

    Wie immer aufpassen. Der Wert in den [] beim erstellen ist der maximalwert und nicht der höchste index. der is immer 1 kleiner ^^

    P.S.:
    Sollte ich mich irren, bitte löschen. sonst nicht 😃



  • C_Spieler()
            {
                strcpy(s_Name, "mystr");
            }
    


  • Danke für deinen Tipp, aber ich meine hier nicht Strings (include<string>), sondern char-Arrays. Das "s_" vor "Name" könnte verwirrend sein,ok...

    Aber das ich vorher sagen muss, wieviel speicher reseviert werden soll klingt ja logisch. Habe ich aber auch schon verher versucht, doch der Compiler wirft auch da Fehler aus.

    class C_Spieler
    {
    	private:
                    char s_Name[30];
    
    	public:
    		C_Spieler()
    		{
                        s_Name[]="Hallo";
                    }
    .
    .
    .
    .
    

    Das meckert er:

    C_Figur.cpp:17: Fehler: expected primary-expression before »]« token
    

    Wenn ich einen Buchstaben jeweils einem Feld zuweise, dann klappt das Beispiel jedoch:

    class C_Spieler
    {
    	private:
                    char s_Name[30];
    
    	public:
    		C_Spieler()
    		{
                        s_Name[9]='A';
                    }
    .
    .
    .
    .
    

    Nun, das bringt mir aber nichts...Ich will ganze Romane in diesem Array drin haben 😛
    Weiß jemand die Lösung?

    Grüße,
    Gast268



  • Danke Ramsis, jetzt funktioniert es...

    Geht das auch ohne diese Funktion benutzen zu müssen? (interessiert mich einfach, weil ich das so umständlich finde)



  • std::string



  • Danke 🙂


Anmelden zum Antworten