Ich generiere ein Objekt einer Klasse und übergebe dieses an eine Funktion einer anderen Klasse. In dieser Funktion wird geprüft, ob die Funktion schon einmal mit diesem Objekt aufgerufen wurde. Wenn nein, macht mein Programm was es soll. Wenn es aber schon mal aufgerufen wurde, raff ich nicht, wie ich aus der Funktion heraus den Destruktor des Objektes, mit der die Funktion aufgerufen wurde, "händisch" ausführe?
Sorry sehe gerade, dass ich mein Problem schlecht beschrieben hab. Zu lange auf Code gestarrt
Ich generiere eines von 4 zufälligen Objekten (die alle Kindklasse der gleichen Elternklasse sind) und dieses wird übergeben. Und hier leigt quasi mein Problem.
Je nachdem, mit welchem der Objekte übergeben wird (mittels Zeiger), würde ich eine normale Funktion aufrufen über
Quellcode
Zeiger->funktion();
Geht hier aber nicht, da der Destruktor sich ja nicht vererbt (?).
Quellcode
Zeiger->~"Name des aufgerufenen Objektes"()
Wäre quasi, was ich brauche
Hatte eig. gedacht, ich kann mit
Quellcode
delete &Zeiger
Das Objekt löschen, auf welches der Zeiger zeigt und über delete wird ja auch der Destruktor abgearbeitet
Bin war nicht flüssig in OOP in C++, aber - du übergibst eine Referenz/Zeiger auf ein Objekt(Der zufälligen Kindklasse A1/A2/A3/A4 von A) an eine Funktion. Diese Funktion ist Bestandteil einer anderen Klasse, bzw. zur Laufzeit des Objektes einer anderen Klasse die keine Verwandschaft mit A hat. Der Parameter der Funktion sollte dann ja Referenz/Zeiger auf A sein, da der Funktion zur kompilierzeit nicht bekannt ist welche Kindklasse da reinkommt. Und über diese Referenz sollte dann auch der Destruktor aufrufbar sein der aus A kommt und den A1/A2/A3/A4 erben. (und plötzlich sind generics wieder schön)
So interpretiere ich zumindest den gewünschten Ablauf, weicht da irgendetwas ab?
und was heißt hier "normale" Funktion? :>
Zum C++ Code kann ich jetzt wenig sagen, aber erfahrungsgemäß wird alles einfacher wenn die Muster klar sind...
wow
man ignoriere meinen scheiß, hab ne klammer falsch gesetzt -> Destruktor wurde auch ausgeführt, wenn der rest des Programms noch auf das Objekt zugreifen will
Kaum codet man nicht falsch, gehts auch wie man es erwartet
"normale Funktion" hab ich mal alles genannt, was weder Virtual, noch Abstackt o.ä. ist (z.b. getx();)
danke trotzdem für die Hilfe, hab irgendwann so im Kreis gedacht und nach nem Konzept Problem gesucht, dass so was dämliches wieder nicht aufgefallen ist
Keine Sorge, Klassiker, Vor allem in allem was mit C zu tun hat...* wobei man derartige Fehler mit der richtigen Umgebung ehem "verringern" kann, Notepad++ ist nicht immer, alles....manchmal ist es einfach nett den Stack sehen zu können.... wenn du mal in der realen Programmier Landschaft unterwes bist gibts eh öfter mal WAS HABT IHR DA GEMACHT?? achso funktioniert, ok, dann klatsch ich mal mein Teil da ran... npnp Momente . ACHSO die kritische Infrastruktur von wichtigen Bank/Kreditkarten Infrastrukturen läuft also SO. Keine Sorge Kinder, das Ende der modernen Welt ist einen halben Vorzeichenfehler entfernt :>. Noch ist das meiste in COBOL/RPG das man wien Buch lesen kann, aber die Sachbearbeiter der Smartphonegeneration sind eher so gegen die ollen greenscreens und es wird momentan heftig migriert, auf Java und ähnliche böse sachen.... queue Spaß Spaß Spaß