gpt4 book ai didi

c++ - 使用继承时未获得文件的正确输出

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:48 26 4
gpt4 key购买 nike

所以我的程序的重点是从文件中读取输入并进行一些计算,然后将结果输出到文件中。这涉及到几个文件,但为简单起见,我将只包括我的程序的两个实现文件。实现文件“employee”是基类,文件“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;
}

最佳答案

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

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

您在评论中指出 IDemployee 中是私有(private)的,因此您需要使用 getter 函数。将类似 int getEmployeeID() const; 的东西添加到您的 employee 类(它可以是 protected 或公共(public)的),它将返回 ID。然后从你的 merit 类中调用它来获取员工 ID。

关于c++ - 使用继承时未获得文件的正确输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42916895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com