C++编译报错“error: only constructors take member initializers”

C++编译报错“error: only constructors take member initializers”

void Laborage::input(string No1, string Name1, double should_wages1, double social_security_funds1):
    No(No1), Name(Name1), should_wages(should_wages1), social_security_funds(social_security_funds1)
{
    real_wages = should_wages - social_security_funds;
}

我在给类赋值的函数中使用了初始化列表的方式赋值,但是报错上面的信息,一开始不知道怎么回事。

经过一番查资料,发现有人说是初始化列表的问题,然后我看了一下初始化列表的定义简介,发现好像初始化列表是构造函数用的,我这种二次赋值的函数不知道能不能用。

然后我把这个初始化列表的形式改成一般赋值形式:

void Laborage::input(string No1, string Name1, double should_wages1, double social_security_funds1)
{
    No = No1;
    Name = Name1;
    should_wages = should_wages1;
    social_security_funds = social_security_funds1;
    real_wages = should_wages - social_security_funds;
}

编译后发现报错没有了,说明这个问题确实是在使用初始化列表上。

可能,只有构造函数才能用初始化列表吧,有待讨论,如果有人知道的话麻烦在下方留言告知!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值