Frage zu CObArray



  • Hallo, ich habe einen CObArray dessen Objektklasse seinerseits einen CObArray besitzt. Ist halt Kompliziert zu erklären....

    //Zugriff auf den ersten Array
    CBauteil *pBauteil = (CBauteil*) pDoc->m_oaBauteil[iBauteil];
    
    //dieser enthält wiederum einen ObArray (m_oaBauteilschicht)
    pBauteil->m_oaBauteilschicht
    
    //Jetzt will ich ein Element dem Bauteil_array hinzufügen
    
    CBauteil *pNeuBauteil = new .....
    
    //und jetzt will ich eine Kopie der Bauteilschicht des ersten Array erstellen
    pDoc->m_oaBauteil.Add(pNeuBauteil );
    pNewBauteil->m_oaBauteilSchicht.Copy(pBauteil->m_oaBauteilschicht);
    

    Jetzt das Problem, im dem neuen "kopierten" Array sind die Werte zur Zeiger auf den ersten Array. d.h. ändere ich jetzt einen Wert im ersten, ist dieser auch im zweiten geändert.
    Wie kann ich das verhindern und eine tatsächliche Kopie erstellen



  • Hi,
    ich vereinfache das mal....

    CObArray oaQuellArray, oaZielArray;
    // Angenommen Quellarray ist mit Objekten gefüllt und ZielArray ist leer
    for(int i = 0; i < oaQuellArray.GetSize();i++)
    {
      oaZielArray.Add(oaQuellArray[i]);
    }
    

    Ich hoffe, ich konnte dir weiterhelfen.

    mfg TakeItEasy!



  • Danke für den Tipp, aber ich habe immer noch das gleiche Problem. Hier nochmal der Code wie ich es jetzt probiert habe:

    CBauteil *pBauteil = (CBauteil*) pDoc->m_oaBauteil[1];
    
    //Neuen Eintrag im ersten (Basis)Array erzeugen
    CBauteil *pNewBauteil = new CBauteil(....);
    pDoc->m_oaBauteil.Add(pNewBauteil);
    
    //Jetzt wird kopiert
    for(int i = 0; i < pBauteil->m_oaBauteilSchicht.GetSize();i++)
    {
        pNewBauteil->m_oaBauteilSchicht.Add(pBauteil->m_oaBauteilSchicht[i]);
    }
    

    Ich glaube das so wie es jetzt ist, nur Zeiger kopiert werden und keine tatsächlichen Daten... (auf jeden Fall funktioniert es so nicht!)


Anmelden zum Antworten