没有合适的构造函数可以从int转换为emp

时间:2013-12-05 19:55:25

标签: c++

我的程序只是增加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;
}

3 个答案:

答案 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问题。