Dynamisches Zufallsarray als privaten Klassenmember



  • Hallo,

    wie lege ich ein dynamisches Array mit Zufallswerten (aber einer festen Größe) als private Variable in einer Klasse fest, um dieses dann in Memberfunktionen zu verarbeiten?

    Meine Funktion, um das Array array der Größe 10 zu füllen sieht so aus und funktioniert:

    #include <iostream>
    #include <cstdlib>
    
    #define SIZE 10
    
    int* rand_array();
    
    int* rand_array() {
      int *array=new int[SIZE];
      for(int i=0;i<SIZE;i++) {
          array[i]=rand()%10;
        }
      return array;
      // delete[] array;
    }
    
    int main(int argc, char *argv[]) {
      int *array=rand_array();
      return 0;
    }
    

    Nun weiß ich nicht, wie ich diesen Code günstig in eine Klasse umwandle. Gehört die Zuweisung mit Werten in den Konstruktor und das delete in den Destruktor?
    Das Array soll wie o.g. beim Aufruf einer Instanz für Memberfunktionen sichtbar sein und nach dem Instanzaufruf wieder gelöscht werden, um den Speicher freizugeben. Vielen Dank für eure Hilfe 🙂



  • Das gleiche in richtigem C++ sieht so aus:

    #include <cstdlib>
    #include <array>
    #include <algorithm>
    
    int main()
    {
      std::array<int, 10> array;
      std::generate(array.begin(), array.end(), rand);
    }
    

    Mit Klasse sieht das so aus. Ein eigener Destruktor ist bei so einfachem Kram überhaupt nicht notwendig.

    #include <cstdlib>
    #include <array>
    #include <algorithm>
    
    struct Class
    {
      explicit Class(std::array<int, 10> values)
        : m_values(values)
      {
      }
    
      void method() const
      {
        this->m_values;
      }
    
    private:
    
      std::array<int, 10> m_values;
    };
    
    int main()
    {
      std::array<int, 10> array;
      std::generate(array.begin(), array.end(), rand);
      Class c((array));
      c.method();
    }
    

Anmelden zum Antworten