我正在开设一个课程,该课程将获取员工ID并付款,然后显示它。 出现的问题是它没有标记任何错误,但它完全跳过了我应该输入数据的代码。
这就是我的代码。
#include <iostream>
#include <iomanip>
using namespace std;
class employee
{
private:
int id;
float compensation;
public:
employee() : id(0), compensation(0)
{}
employee(int num, float pay) : id(num), compensation(pay)
{}
void setid(int i) { id=i; }
void setcomp(float comp) { compensation=comp; }
void displayinfo() { cout << "Id: " << id << endl << "Pay: " << compensation << endl; }
};
int main ( int argc, char* argv)
{
employee i1(1111, 8.25);
i1.displayinfo();
employee i2[3];
for (int i=0; i<3; i++)
{
cout << "Enter Employee ID: ";
cin >> i2[i].setid(num);
cout << "Enter Employee Pay: ";
cin >> i2[i].setcomp(num);
}
for(int i=0; i<3; i++)
{
i2[i].displayinfo();
}
//------------------------------------------------
system("Pause");
return 0;
}
答案 0 :(得分:1)
这段代码甚至不应该编译。问题是你的循环:
employee i2[3];
for (int i=0; i<3; i++)
{
cout << "Enter Employee ID: ";
cin >> i2[i].setid(num); // Reading into a void return value.
cout << "Enter Employee Pay: ";
cin >> i2[i].setcomp(num); // Reading into a void return value.
}
您至少需要将其更改为:
employee i2[3];
for (int i=0; i<3; i++)
{
int num; float pay;
cout << "Enter Employee ID: ";
cin >> num;
i2[i].setid(num);
cout << "Enter Employee Pay: ";
cin >> pay;
i2[i].setcomp(pay);
}
注意:您的示例代码不编译:
c:\ users \ nate \ documents \ visual studio 2010 \ projects \ employeetest \ employeetest \ employeetest.cpp(33):error C2065:'num':undeclared identifier 1&gt; c:\ users \ nate \ documents \ visual studio 2010 \ projects \ employeetest \ employeetest \ employeetest.cpp(35):错误C2065:'num':未声明的标识符
第33行&amp; 35是我在第一个代码块中指示的行。
修改强> 在做出指示的更改后,我得到了这个输出:
Id: 1111
Pay: 8.25
Enter Employee ID: 1
Enter Employee Pay: 1234.5
Enter Employee ID: 3
Enter Employee Pay: 5678.9
Enter Employee ID: 4
Enter Employee Pay: 123
Id: 1
Pay: 1234.5
Id: 3
Pay: 5678.9
Id: 4
Pay: 123
Press any key to continue . . .
另外,请避免使用system
功能。您可以通过执行以下操作来完成相同的操作而不会生成另一个进程(system
导致创建单独的进程):
cout&lt;&lt; “按[ENTER]继续......”&lt;&lt; ENDL;
cin.get();
答案 1 :(得分:0)
cin >> i2[i].setid(num);
您正在编译的代码与您显示的代码不同。此代码将给出compile error,因为setid返回void而num尚未声明。