Как вы инициализируете вектор структур, которые содержат векторы как члены? - PullRequest
3 голосов
/ 10 декабря 2010

Я использую Boost :: assign для инициализации вектора структур следующим образом:

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. Структура spriteInfo в настоящее время выглядит следующим образом:

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;
};

Однако я бы хотел сделать std::vector<int> членом spriteInfo.

Если я сделаю это, как будет выглядеть приведенное выше задание? Т.е. можете ли вы инициализировать вектор при передаче его в качестве параметра конструктору?

1 Ответ

3 голосов
/ 10 декабря 2010

Это должно сделать:

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)))
    ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...