如何使大括号初始化和默认值一起工作?

时间:2014-06-23 14:58:45

标签: c++ initialization

以下代码可以使用

class A
{
public:
    int i;
    float f;
};


int main()
{
    A a{ 1, 0.1 };
    return 0;
}

但是,如果我为A的成员添加默认值,则无效

class A
{
public:
    int i = 0;
    float f = 3.14;
};

如何让两者一起工作?

1 个答案:

答案 0 :(得分:4)

您必须定义默认和自定义构造函数,如下例所示:

class A
{
public:
    A() {}  
    A(int const _i, float const _f) : i(_i), f(_f) {}
    int i = 0;
    float f = 3.14;
};

LIVE DEMO

然而,正如@Kerek SB已经提到的那样,@T.C.在评论中将在C ++ 14中修复,您的代码将按原样运行。