Konvertierung eines Zeigers auf den Anfang eines 1D Arrays in einen ***Zeiger



  • Ich habe das Problem, dass ich anstatt eines 3D-pointers nur ein normales Array erstellt habe.
    Die Elemente werden Dabei der Reihenfolge nach mit folgender Regel abgespeichert.

    // x + y Dx + z Dx Dy
    

    Nun wollte ich einen Konvertierungsoperator überladen, der mir mein Array dann automatisch in einen ***Zeiger konvertiert.
    Allerdings bin ich mir nich ganz sicher ob, ich gefahrlos konvertieren darf, oder dann beim Zugriff mit dem Indexoperator auf einzelne Elemente Fehler auftreten könnten.



  • Das geht gar nicht. So wie du auch keinen Zeiger auf ein 3D-Array in einen *** umwandeln kannst.

    edit: Es sei denn per Operatorüberladung mit Proxyobjekten. Die Antwort oben bezieht sich auf die eingebauten Möglichkeiten.



  • double *** dreideezeiger = new double ** [Dz];
    
      for (int i=0;i<Dz;++i)
      {
        dreideezeiger[i] = new double* [Dy];
    
        for (int j=0;j<Dy;++j)
        {
          dreideezeiger[i][j] = eindeearray + j*Dy + i*Dz*Dy;
        }
      }
    

    meinst du sowas?

    Edit: Man muss das ganze Gedöhns auch wieder freigeben da iss doch deine Variante viel besser! Ganz zu schweigen von dem zusätzlichen Speicheraufwand.


Anmelden zum Antworten