Veröffentlicht 19. Juni 200619 j Liebe Leute! Ein unglaublich schlechter Dozent hat uns folgende Aufgabe gestellt: Erstellen Sie ein Array der Klasse Kontakt und speichern sie darin 6 Objekte. Keiner bekommt es hin - auch der Dozent nicht(!). Folgendes wurde probiert: ... Kontakt kf1("Maier", "Gudrun", 2, "Circus", 5, true); Kontakt kArray[5]; kArray[0]=kf1; CBuilderX (Solaris) beendet die Arbeit an Stelle der ersten Zuweisung mit Code 11. Mit anderen Sprachen bin ich sehr erfahren, aber wie das nu hier in C++ läuft, weiss ich nicht. Ich würde gern wissen, ob und wie man Objekte einer Klasse in nem Array organisiert. Und ich will es meinem Dozenten zeigen.... P.S.:Ich entschuldige mich fürs Posten ins falsche Forum...
19. Juni 200619 j Hi, so wie du das gemacht hast sollte es funktionieren. Leider ist Code 11 nicht wirklich aussagekräftig. Evtl. wäre die Definition der Klasse interessant bzw. eine genauere Fehlermeldung.
19. Juni 200619 j Im Internet habe ich dieses simple Beispiel gefunden, welches mir gut gefällt: #include <iostream> #include <string> using namespace std; class Cat { public: Cat(string name = "tom", string color = "black_and_white") : _name(name), _color(color) {} ~Cat() {} void setName(string name) {_name = name;} string getName() {return _name;} void setColor(string color) {_color = color;} string getColor() {return _color;} void speak() {cout << "meow" << endl;} private: string _name; string _color; }; int main() { // Single Argument form of array initialization list Cat myCats[4] = {"Homer","Marge","Bart","Lisa"}; // Emplicit use of constructors in array initialization list Cat myOtherCats[3] = { Cat("Chris","Gray"), Cat("Charles","White"), Cat("Cindy","BlueGray") }; Cat *catpt = new Cat[27]; Cat *pt; // Use accessor methods to initialize dynamically allocated class objects pt = catpt; for (int i = 0; i < 27; i++) { pt->setName("Felix"); // You can never have enough pt->setColor("Black"); // black cats named Felix pt++; // Can also increment pointer within the for statement } // Verify number of Felix's for (int i = 0; i < 27; i++) { cout << (i+1) << ": " << catpt[i].getName() << endl; //Use of array notation with a pointer } myCats[0].speak(); myCats[1].speak(); delete[] catpt; //Remember the braces when freeing the memory of an array return 0; }
19. Juni 200619 j Erstellen Sie ein Array der Klasse Kontakt und speichern sie darin 6 Objekte. ... Kontakt kArray[5];Das ist schon der erste Fehler. In dieses Array passen nur 5 Objekte, nicht 6. kArray[0]=kf1; ... CBuilderX (Solaris) beendet die Arbeit an Stelle der ersten Zuweisung mit Code 11.Wie carstenj schon sagte, ohne Kenntnis der Klasse Kontakt lässt sich nicht sagen, woran das liegt.
19. Juni 200619 j Autor Wir haben das Problem gerade durch Überladen des "="-Operators gelöst. Jetzt funktioniert es Wegen des Dozenten wird trotzdem das Arbeitsamt eingeschaltet...er macht den Eindruck, nicht wirklich in C++ bewandert zu sein. Zu der Lösung sind wir auch nur ohne seine Mithilfe gekommen.
7. Juli 200619 j Hehe, ist klar, dass die Zuweisung auf diese Art und Weise nicht funktioniert, wenn der =Operator nicht implementiert ist. Man hätte das Problem aber auch so lösen können: Kontakt kf1("Maier", "Gudrun", 2, "Circus", 5, true); Kontakt* kArray[5]; //Die 5 spielt hier mal keine Rolle kArray[0] = &kf1;[/PHP] oder so: [PHP] Kontakt* kArray[5]; kArray[0] = new Kontak("Maier", "Gudrun", 2, "Circus", 5, true); //hier sollte man das deleten nicht vergessen Beide nicht getestet, aber sollten funktionieren.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.