所以我的程序的重点是从文件中读取输入并进行一些计算,然后将结果输出到文件中。 这涉及到几个文件,但为了简单起见,我将只包含我的程序的两个实现文件。实施文件"员工"是基类和文件" 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;
}
答案 0 :(得分:0)
您还没有向我们展示您定义类的头文件,因此这可能不太合适。我假设employee
和merit
都有一个名为ID
的成员。
要访问与派生类中的成员同名的基类成员,只需限定名称即可。在您的情况下,请使用employee::ID
代替ID
。
您在ID
中employee
是私有的评论中表示,因此您需要使用getter功能。将int getEmployeeID() const;
之类的内容添加到您的employee
类(可以是受保护的或公共的),它将返回ID。然后从您merit
类中调用该方法以获取员工ID。