kokyo Geschrieben 19. Juni 2006 Geschrieben 19. Juni 2006 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... Zitieren
carstenj Geschrieben 19. Juni 2006 Geschrieben 19. Juni 2006 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. Zitieren
Timon Geschrieben 19. Juni 2006 Geschrieben 19. Juni 2006 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; } Zitieren
Klotzkopp Geschrieben 19. Juni 2006 Geschrieben 19. Juni 2006 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. Zitieren
kokyo Geschrieben 19. Juni 2006 Autor Geschrieben 19. Juni 2006 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. Zitieren
FinalFantasy Geschrieben 7. Juli 2006 Geschrieben 7. Juli 2006 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.