C++ 使用继承时未获得文件的正确输出
所以我的程序的重点是从文件中读取输入,进行一些计算,然后将结果输出到文件中。 这涉及到几个文件,但为了简单起见,我将只包括我的程序的两个实现文件。实现文件“employee”是基类,文件“merit”是派生类 现在对于输出,我应该以:ID--Salary的格式得到它 我得到的薪水结果是正确的,但ID的数字是错误的。我知道这与以下事实有关:在merit::print()函数中,它打印的是[merit::ID],而不是[employee::ID] 有没有办法让它打印出employee::ID而不是merit::ID 以下是基类文件(员工文件):C++ 使用继承时未获得文件的正确输出,c++,inheritance,file-io,C++,Inheritance,File Io,所以我的程序的重点是从文件中读取输入,进行一些计算,然后将结果输出到文件中。 这涉及到几个文件,但为了简单起见,我将只包括我的程序的两个实现文件。实现文件“employee”是基类,文件“merit”是派生类 现在对于输出,我应该以:ID--Salary的格式得到它 我得到的薪水结果是正确的,但ID的数字是错误的。我知道这与以下事实有关:在merit::print()函数中,它打印的是[merit::ID],而不是[employee::ID] 有没有办法让它打印出employee::ID而不是m
#包括
#包括
#包括
#包括“employee.h”
#包括“优点.h”
使用名称空间std;
//employee类的成员函数的定义如下。
void employee::readData(ifstream&inf)
{
inf>>ID>>职务等级>>年限>>教育;
}
无效员工::打印(流和流出)常量
{
outp您没有向我们显示您定义类的头文件,因此这可能不太正确。我假设employee
和merit
都有一个名为ID
的成员
要访问与派生类中的成员同名的基类成员,只需限定名称。在您的情况下,请使用employee::ID
而不是ID
您在注释中指出,ID
在employee
中是私有的,因此需要使用getter函数。将类似于int-getEmployeeID()const;
的内容添加到employee
类中(它可以是受保护的,也可以是公共的)这将返回ID。然后从您的merit
类调用它以获取员工ID。您没有向我们显示您定义类的头文件,因此这可能不太正确。我假设employee
和merit
都有一个名为ID
的成员
要访问与派生类中的成员同名的基类成员,只需限定名称。在您的情况下,请使用employee::ID
而不是ID
您在注释中指出,ID
在employee
中是私有的,因此需要使用getter函数。将类似于int-getEmployeeID()const;
的内容添加到employee
类中(它可以是受保护的,也可以是公共的)这将返回ID。然后从您的merit
类调用它以获取员工ID。是ID
static吗?@Jerfov2 ID从输入文件读取。然后它应该显示在输入文件上。函数merit::readData()调用函数employee::readData()它从输入文件中读取ID。@Jerfov2 ID是私有的。它是在员工头文件中声明的。是否确实从输入中读取正确的值到ID
?这可能是您的问题:从文件读取是的,它读取正确的值。如果我仅将员工文件用于此程序,我将获得正确的值结果。美德类不打印employee::readData()函数中读取的ID。是否从输入文件中读取ID
static?@Jerfov2 ID。然后它应该显示在输入文件中。美德::readData()函数调用employee::readData()函数它从输入文件中读取ID。@Jerfov2 ID是私有的。它是在员工头文件中声明的。是否确实从输入中读取正确的值到ID
?这可能是您的问题:从文件读取是的,它读取正确的值。如果我仅将员工文件用于此程序,我将获得正确的值结果。优点类不会打印employee::readData()函数中读取的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;
}
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;
}