Advertisement
Patasuss

C++ Nested Objects

Jul 3rd, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct STR {
  4.     int id;
  5.     int numPointers;
  6.     STR** ptrListe;
  7. };
  8.  
  9. int main() {
  10.     //Unser 'Parent'-Objekt
  11.     STR str;
  12.    
  13.     // Wir wollen 3 Kinder anlegen
  14.     str.numPointers = 3;
  15.     // Pointerliste anlegen
  16.     str.ptrListe = new STR*[3];
  17.    
  18.     //Wir weisen jedem Kind eine ID zu
  19.     for(int i=0; i<str.numPointers; ++i) {
  20.         str.ptrListe[i] = new STR{i, 0, nullptr};
  21.     }
  22.    
  23.     //Ausgeben jeder Kinder-ID über den Random-Access-Operator []
  24.     //str.ptrListe[0] - Gibt den ersten Pointer der Liste zurück
  25.     for(int i=0; i<str.numPointers; ++i) {
  26.         std::cout << str.ptrListe[i]->id << std::endl;
  27.     }
  28.    
  29.     //Ausgeben jeder Kinder-ID über Pointer-Arithmetik
  30.     for(int i=0; i<str.numPointers; ++i) {
  31.         //WICHTIG: Man darf nicht str.ptrListe+sizeof(STR*)+i  machen!
  32.         // "ptr = ptr+1" verschiebt den Pointer um Element und nicht nur um 1 Byte!
  33.         STR* childStr = *(str.ptrListe+i); //Ist das gleiche wie str.ptrListe[i]
  34.         std::cout << childStr->id << std::endl;
  35.     }
  36.    
  37.     //Jedes Kind freigeben
  38.     for(int i=0; i<str.numPointers; ++i) {
  39.         delete str.ptrListe[i];
  40.     }
  41.    
  42.     //Liste freigeben
  43.     delete[] str.ptrListe;
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement