C++

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hab folgende Problemstellung:

      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?

      Ideen?
      FREE Hat
    • Geht es dir nur darum den Destruktor des übergebenen Objekts aufzurufen? Dazu findet du problemlos was bei Google: Link1, Link2

      Falls dein Problem eigentlich ein anderes ist, beschreibe bitte die Situation nochmal genauer und wo genau dein Problem liegt.
    • 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

      1. Zeiger->funktion();

      Geht hier aber nicht, da der Destruktor sich ja nicht vererbt (?).

      Quellcode

      1. Zeiger->~"Name des aufgerufenen Objektes"()

      Wäre quasi, was ich brauche

      Hatte eig. gedacht, ich kann mit

      Quellcode

      1. delete &Zeiger

      Das Objekt löschen, auf welches der Zeiger zeigt und über delete wird ja auch der Destruktor abgearbeitet

      bin langsam auch gut verwirrt
      FREE Hat
    • 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 8o
      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
      FREE Hat
    • 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ß