Frage von WarumGeld, 19

C++ Dynamisches Array aus structs?

Ich möchte auf ein Element einer struct-Instanz in einem Dynamischen Array zugreifen. So hier versuche ich es:

// In der Klassendefinition der Spielverwaltung struct Spieler { char Name[21]; char Symbol; }; Spieler *Spielerliste;

// Im Konstruktor der Spielverwaltung // Spielerliste wird mit den 2 Standardspielern besetzt Spielerliste = new Spieler[Spieleranzahl]; Spielerliste[0].Name = "Spieler O";

Expertenantwort
von TeeTier, Community-Experte für programmieren, 2

Das, was du da schreibst ist C-Stil und kein C++.

Nimm doch lieber einen vector<Spieler> und string für den Namen:

struct Spieler {
Spieler(string n="unbekannt", char s='X')
: name {n}, symbol {s} {}

string name;
char symbol;
};

vector<Spieler> mannschaft(5);

spielerliste[2].name = "Max Mustermann";
spielerliste[2].symbol = 'm';

Naja, davon abgesehen würde ich einen völlig anderen Ansatz wählen, aber ich vermute eher, dass es dir um die C-artigen Grundlagen mit nackten Arrays geht, oder?

Antwort
von mememememe, 7

Das Problem liegt nicht in dem Konstrukt mit struct und new. Die Zuweisung an sich kann so nicht vorgenommen werden (const char* -> char*).

Verwende eine der C-Funktionen (z. B. strncpy( . , .  , 21) ) um den Namen zu setzen (evtl. in einem Konstruktor/setter?) oder benutze z. B. std::string.

Keine passende Antwort gefunden?

Fragen Sie die Community