CHAR Array an Konstruktor übergeben und dort speichern
-
Hallo,
bin neu hier weil ich bei meinen Versuchen CPP zu lernen auf ein kleines Problem gestossen bin. Trotz google und nun schon stundenlangem probieren komme ich nicht weiter.
Ich möchte ein ganz banales Programm zum einlesen von Studenten schreiben. Dazu rufe ich in der main folgendes auf :
Studenten markus("Max", "Mustermann", 2982);Die Klasse sieht dann wie folgt aus :
class Studenten { protected: char vorname[30]; char nachname[30]; int matrikelnummer; public: Studenten(char[] ,char* ,double c); void student_ausgeben(); }; Studenten::Studenten(char* a, char* b, double c){ this->vorname = a; this->nachname = b; matrikelnummer = c; } void Studenten::student_ausgeben(){ cout << "Der Student " << vorname << " " << nachname << " hat die Matrikelnummer " << matrikelnummer; cout << endl; };Leider funktioniert das ganze nicht so wie ich das gerne hätte. Er stört sich daran, dass das Array nicht so übergeben wird, wie er es gerne hätte.
Was muss ich anders machen?
MfG und Danke!
-
Arrays können auch nicht direkt zugewiesen werden, da hat dein Compiler vöiig recht.
schnelle Lösung: verwende strcpy() zum Füllen der char-Arrays
bessere Lösung: vergiss die char-Arrays und nimm lieber std::string
-
Arrays kann man nicht mit = x befüllen. Entweder du nutzt strcpy(), oder besser noch, std::string als Member.
Zudem solltest du statt einem char* einen const char* übergeben und das immer dann, wenn eine Funktion den Inhalt eines Strings nicht ändert. Das ist gut für die Übersicht und andere können deinen Code besser verstehen.
Du könntest natürlich auch gleich einen std::string& übergeben.Zudem sollte deine Klasse wohl eher "Student" heißen, denn sie beschreibt eine Vorlage für genau einen Studenten.
-
Zeichenketten-Literale haben den Typ
const char*(nur so nebenbei).
-
EOutOfResources schrieb:
Zeichenketten-Literale haben den Typ
const char*(nur so nebenbei).Falsch. Der Typ ist const char[size].