我的程序只是增加emp类中的工资抛出函数增加 但我在行中的调用函数行中遇到此错误: 没有合适的构造函数可以从int转换为emp
这是我的代码:
#include <iostream>
#include <string>
using namespace std;
class emp
{
public:
int salary;
};
void increase(emp x,emp y)
{
x.salary+=100;
y.salary+=250;
}
int main()
{
int value=0;
emp fst, scnd;
cin >> fst.salary >> scnd.salary;
increase(fst.salary,scnd.salary);
cout << fst.salary << endl << scnd.salary << endl;
cin >> value;
return 0;
}
答案 0 :(得分:1)
increase
需要两个emp
作为参数,但您传入两个int
。
更改
increase(fst.salary,scnd.salary);
到
increase(fst,scnd);
你的下一个问题是为什么值不会改变,所以为你省去麻烦 - 这是因为你传递了价值,有效地改变了原始物品的副本。你需要通过引用传递:
void increase(emp& x,emp& y)
答案 1 :(得分:0)
increase(fst.salary,scnd.salary);
应为increase(fst,scnd);
,void increase(emp x,emp y) ...
应为void increase(emp& x,emp& y) ...
答案 2 :(得分:0)
您需要传递emp
而不是int
。此外,您将按值传递参数。请改用:
void increase(emp &x,emp &y)
并传递struct变量;即fst和scnd而不是fst.salary和scnd.salary。有关更好的理解,请参阅this问题。