Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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;

}

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.