Zum Inhalt springen

Der Dozent versagt: Array einer Klasse


kokyo

Empfohlene Beiträge

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...