【问题标题】:How do you initialise a vector of structures that contain vectors as members?如何初始化包含向量作为成员的结构向量?
【发布时间】:2010-12-10 06:47:18
【问题描述】:

我正在使用 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 */
;

注意。 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&lt;int&gt; 设为spriteInfo 的成员。

如果我这样做,上面的作业会是什么样子?即,您可以在将向量作为参数传递给构造函数的同时初始化向量吗?

【问题讨论】:

    标签: c++ stl


    【解决方案1】:

    应该这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2011-12-25
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多