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;
}
编译后发现报错没有了,说明这个问题确实是在使用初始化列表上。
可能,只有构造函数才能用初始化列表吧,有待讨论,如果有人知道的话麻烦在下方留言告知!