Klassenarray initialisieren



  • Morgen! Ich habe folgenden Code:

    num_types = g_pSurfGalaxies->w / 16;
    
        for(i = 0; i < NUM_GALAXIES; i++) {
            g_Galaxies[i].x = rand() % 640;
            g_Galaxies[i].y = rand() % 480;
            g_Galaxies[i].type = rand() % num_types;
        }
    

    Ich war der Meinung das ging auch einfacher wenn der ctor der Galaxyklasse die Parameter schon anbietet, irgendwas nach dem Motto:

    // Pseudocode, alle 50 instanzen sollen mit Zufallswerten initialisiert werden
    Galaxy g_Galaxies[50] = Galaxy(rand() % 640, rand() % 480, rand() % num_types);
    

    Ich will mir die forschleife also sparen, wie ging das? Oder ging das gar nicht 😃


  • Mod

    wenn du c'tor argumente anbietest, wird jedes einzelne element mit denselben parametern konstruiert - du könntest dir also einen ensprechenden c'tor basteln, etwa so:

    struct Galaxy
    {
        Galaxy(int width,int height,int types)
        : x(rand()%width),y(rand()%height),type(rand()%types) {}
        int x,y,type;
    };
    // ...
        num_types = g_pSurfGalaxies->w / 16;
        Galaxy g_Galaxies[NUM_GALAXIES](640,480,num_types);
    


  • Ah das war die Syntax die ich gesucht hatte, danke 🙂

    Galaxy g_Galaxies[NUM_GALAXIES](640,480,num_types);
    

Anmelden zum Antworten