类和数组

时间:2011-05-24 00:29:46

标签: c++ arrays class

我正在开设一个课程,该课程将获取员工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;
}

2 个答案:

答案 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尚未声明。