使用继承时,没有获得文件的正确输出

时间:2017-03-21 01:33:43

标签: c++ inheritance file-io

所以我的程序的重点是从文件中读取输入并进行一些计算,然后将结果输出到文件中。 这涉及到几个文件,但为了简单起见,我将只包含我的程序的两个实现文件。实施文件"员工"是基类和文件" merit"是派生类。

现在输出我应该得到它的格式:ID --- Salary

我得到了薪水的正确结果,但我得到了错误的ID号码。我知道它与merit :: print()函数中的事实有关,它是打印[merit :: ID]而不是[employee :: ID]。

有没有我可以打印出employee :: ID而不是merit :: ID?

以下是基类文件(员工文件):

#include <iostream>
#include <fstream>
#include <iomanip>
#include "employee.h"
#include "merit.h"


using namespace std;

// The definition of the members functions of the class employee goes here.

void employee::readData(ifstream& inf)
{
    inf >> ID >> Job_class >> Years >> Ed;
}




void employee::print(ofstream& outf) const
{
    outf << ID << setw(15) << fixed << showpoint << setprecision(2) << "$ " << sal << endl;
}

以下文件是派生类文件(merit文件):

void merit::readData(ifstream& inf)
{
    employee::readData(inf);
    inf >> mer;

}



void merit::print(ofstream& outf) const
{
    outf << ID << setw(15) << fixed << showpoint << setprecision(2) << "$ " << salary << endl;
}

1 个答案:

答案 0 :(得分:0)

您还没有向我们展示您定义类的头文件,因此这可能不太合适。我假设employeemerit都有一个名为ID的成员。

要访问与派生类中的成员同名的基类成员,只需限定名称即可。在您的情况下,请使用employee::ID代替ID

您在IDemployee是私有的评论中表示,因此您需要使用getter功能。将int getEmployeeID() const;之类的内容添加到您的employee类(可以是受保护的或公共的),它将返回ID。然后从您merit类中调用该方法以获取员工ID。