Objekt an Klasse übergeben und kopieren



  • Hallo,

    ich habe schon wie blöd nachgelesen, aber scheinbar habe ich doch ein sehr spezielles Problem:

    Prinzipiell geht es um das Kopieren eines Objektes

    Mein Code soll in 3 Modis laufen, dafür habe ich drei Klassen erstellt

    FS9Interface
    CameraINterface
    VideoInterface
    

    Je nach dem welcher Modus aktiv ist, wird ein Objekt

    acData
    

    erstellt. Diese Objekt wird (in allen 3 Fallen) von einer Klasse

    Mode
    

    abgeleitet, die alle Methoden als virtuelle Methoden der abgeleiteten Klassen enthält. Soweit so gut,
    Später übergebe ich das Objekt an eine weitere Klasse

    int VirtualSpace::setVirtualSpace(Mode* acData)
    {
    this->acData= acData;
    }
    

    Was ich möchte, ist eine locale Kopie vom Objekt acData innerhalb der VirtualSpace Klasse. Leider arbeitet man ja so wie Zeigern, was ich aber nicht will. Scheinbar muss man mit Copy Konstruktor arbeiten, aber durch die Ableitung der von Mode Klasse komme ich hier gar nicht zurecht. Vielleicht könnte hier jmd aushelfen.

    Vielen Dank



  • Wenn du wirklich eine Kopie benötigst, dann solltest du den Klassen eine virtuelle (bzw. abstrakte) Clone()-Funktion spendieren.
    Und dann so aufrufen:

    int VirtualSpace::setVirtualSpace(Mode* acData)
    {
        this->acData = acData->Clone();
    }
    

    Du solltest dich aber selbst fragen, ob du wirklich eine (lokale) Kopie benötigst. Meistens gibt es besser Design-Möglichkeiten.

    P.S. Bist du sicher, daß du hier im richtigen Unterforum bist (C++/CLI != C++)?



  • Hallo,
    Danke für die Info.
    Ich bin nicht von Haus aus Programmierer daher bin ich mir nicht sicher wohin der Beitrag gehört.
    In meinen Objekt befindet sich u.a. ein Bild welches ich lokal ändern muss. Das eigentliche Objekt muss für Analyse- und Speicherwerke erhalten bleiben.
    MfG Maik


Anmelden zum Antworten