Benennen von Objekten über Benutzeroberfläche



  • Hallo !

    Ich habe ein Problem bei einer Funktionalität in meinem Projekt und hoffe, dass mir vielleicht jemand von euch weiterhelfen kann.

    Eine Klasse in meinem Projekt heißt Agent. Ich möchte jetzt Instanzen von dieser Klasse bilden.

    Entweder soll es so laufen, dass ein Benutzer einfach über ein Formular (benutze den C++ Builder) einen Namen eingibt und auf einen Button drückt und dann soll eine Instanz mit dem eingegebenen Namen kreiert werden.
    Oder ich füge noch ein Attribut "Name" in die Klasse ein, in die die Eingabe dann abgespeichert wird und die Instanz des Agenten selber soll dann einen zufälligen Namen bekommen.

    Kann mir jemand sagen, wie man einen der beiden Wege realisieren könnte ?

    Danke



  • Also, den Namen, den die Instanz Deiner Klasse im Programm hat, ist für den Benutzer eigentlich egal. Da Du erwähnt hast, daß je nach Benutzereingaben, mehrere Instanzen der Klasse erzeugt werden, würde es vielleicht Sinn machen, Zeiger auf diese Instanzen in einem Array zu speichern. In die Klasse könntest Du dann ein Stringfeld mit dem Namen bzw. der Caption einfügen.
    Ansonsten läuft es eigentlich ziemlich einfach:
    Bei Benutzereingabe (z.B. Buttonclick) fragst Du zuerst den Namen ab, der der Instanz gegeben werden soll. Danach erzeugst Du mit dem new Operator eine neue Instanz und weißt der Eigenschaft Name dann den eingegebenen String zu.



  • vielleicht noch einmal in aller deutlichkeit: die namen, die du den variablen und objekten in einem programm gibst, existieren zur laufzeit nicht. die sind nur dafür da, dass programmierer ihren code auch lesen können. namen sind schall und rauch.
    dein lösungsvorschlag ist der richtige: jede instanz hat ein attribut, dass den namen speichert (ein std::string zum Beispiel), der eingegben wird. die instanzen selbst verwaltest du am besten über irgendwelche Container, wie zb std::list oder std::vector.



  • Danke .

    Habs jetzt so gemacht und es läuft. Wieder was dazu gelernt 🙂


Anmelden zum Antworten