3 Stimmen

Wie initialisiert man einen Vektor von Strukturen, die Vektoren als Mitglieder enthalten?

Ich verwende Boost::assign, um einen Vektor von Strukturen wie folgt zu initialisieren:

const std::vector<spriteInfo> Resources::hudObjectInfo = boost::assign::list_of
    ( spriteInfo(FALSE, SCORE_START_X, SCORE_START_Y, CENTER_ALIGN ))
    ( spriteInfo(FALSE, SCORE_START_X+NUM_DIFF, SCORE_START_Y, CENTER_ALIGN))
    ... /* and so on */
;

NB. Die spriteInfo Struktur sieht derzeit wie folgt aus:

struct spriteInfo
{
    spriteInfo::spriteInfo(bool i, float x, float y, int align):
        invisible(i), x1(x), y1(y), alignment(align){}
    bool        invisible;
    float       x1;
    float       y1;
    int         alignment;
};

Ich möchte jedoch eine std::vector<int> als Mitglied von spriteInfo .

Wenn ich das tue, wie würde die Zuweisung oben aussehen? d.h. Können Sie einen Vektor initialisieren, während Sie ihn als Parameter an einen Konstruktor übergeben?

3voto

icecrime Punkte 70619

Das sollte reichen:

struct spriteInfo
{
    spriteInfo(bool i, float x, float y, int align, const std::vector<int> &v):
        invisible(i), x1(x), y1(y), alignment(align), something(v) {}
    bool             invisible;
    float            x1;
    float            y1;
    int              alignment;
    std::vector<int> something;
};

int main()
{
    const std::vector<spriteInfo> Resources::hudObjectInfo = boost::assign::list_of
        ( spriteInfo(FALSE, SCORE_START_X, SCORE_START_Y, CENTER_ALIGN, boost::assign::list_of(1)(2)(3)))
        ( spriteInfo(FALSE, SCORE_START_X+NUM_DIFF, SCORE_START_Y, CENTER_ALIGN, boost::assign::list_of(4)(5)(6)))
    ;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X