Membervariable - Array belegen



  • Ich habe einige konstante Werte die ich gerne in Arry packen möchte, was Membervariable von 'ner Klasse ist. Nur das belegen mit Werten ist so umständlich.

    Kann ich das irgendwie auch in der Form int blubb[][] = {{...}, {...}, ...}; machen?



  • das geht. beispiel:

    int blubb[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    int blabb[][3] = {{1,2,3},{4,5,6},{7,8,9}};
    

    müsste sich compilieren lassen (in C)
    eins davon oder beide gehen sicher auch in C++
    🙂



  • Wenn so einfach wäre hätte ich nicht gefragt.

    class Blubb
    {
    private:
       int mAr[][] = {{...}, ...};   // irgendwelche Werte
       // ...
    };
    

    Das bring mir den Fehler
    a brace-enclosed initializer is not allowed here before '{' token
    ISO C++ forbids initialization of member `mTextureCoordinates'



  • (nicht-statische) Member-Variablen kannst du auch nicht in der Klassendefinition mit Werten vorbelegen - weil zu dem Zeitpunkt nich gar kein Objekt angelegt wird. Deshalb gehören Member-Initialisierungen in den Ctor:

    class test
    {
      int data[3][3];
    public:
      test(int v0)
      {
        for(int i=0;i<3;++i) for(int j=0;j<3;++j) data[i][j]=(i+v0)*(j+v0);
      }
      //oder auch so:
      test()
      {
        int pre_data[3][3]={{1,2,3},{4,5,6},{7,8,9}};
        memcpy(data,pre_data,sizeof(pre_data));
      }
    };
    

    (leider vertragen sich Ctor'en nicht mit C-Initialisierungssequenzen, sonst könntest du auch test() : data({1,2,3},{4,5,6},{7,8,9}}) {} schreiben)



  • Schade, dass es nicht direkt geht.

    Aber die zweite Möglichkeit mit memcpy dürfte ausreichen.


Log in to reply