C++结构体数组初始化

3

我有以下结构:

struct localframepos
{
    double ipos; //local room frame i(x) coordinate, in mm
    double cpos; //local room frame c(y) coordinate, in mm
    double rpos; //local room frame r(z) coordinate, in mm

    localframepos()
    {
        ipos = 0;
        cpos = 0;
        rpos = 0;
    }
    localframepos(double init_ipos, double init_cpos, double init_rpos) //init constructor
    {
        ipos = init_ipos;
        cpos = init_cpos;
        rpos = init_rpos;
    } 
};

如何实现以下功能:
localframepos positions[] = { {0, .5, .2},
                              {4.5, 4, .5} };
3个回答

3

移除构造函数。要使用花括号初始化,类型必须是POD。


为什么选择C++11,这是简单的聚合初始化。 - Jesse Good
@CodeKingPlusPlus 普通数据类型 - anthonyvd
@JesseGood,C++03是否支持使用POD初始化数组? - Luchian Grigore
“要使用花括号初始化,类型必须是POD”这句话在C++03中是不正确的(任何聚合体都可以用花括号语法进行初始化),而在C++11中更加不正确。 - Cheers and hth. - Alf

0

我通常使用

localframepos positions[] = { localframepos(0  , .5, .2),
                              localframepos(4.5, 4, .5) };

这个看起来不是很漂亮,但如果你需要不同的初始化选项,它会更加灵活。


0

对于C++03,您可以编写以下代码:

localframepos positions[] = { localframepos( 0, .5, .2 ),
                              localframepos( 4.5, 4, .5 ) };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接