这是academico.h
#ifndef ACADEMICO_H
#define ACADEMICO_H
#include "empleado.h"
class academico: public empleado
{
friend istream &operator>>(istream &,academico &);
public:
academico();
virtual void imprimir () const;
virtual float neto () const;
string nivel10() ;
private:
char NivelE;
int Ptj;
};
empleado构造函数导入:string nombre,string codigo,int edad [3]和float SalarioB
academico::academico() : empleado()
{
NivelE = ' ';
Ptj = 0;
}
在这部分中,我采用了所有变量,它的效果非常好,我之前已经证明了这一点
istream &operator >>(istream &op, academico &a)
{
cout << "\nIngrese el codigo del empleado: ";
op >> a.codigo;
cout << "\nIngrese el nombre del empleado: ";
op >> a.nombre;
do
{
cout << "\nIngrese el anio de nacimiento (mayor 1900): ";
op >> a.edad[2];
}while(a.edad[2]<1900);
do
{
cout << "\nIngrese el mes de nacimiento (1-12): ";
op >> a.edad[1];
}while(a.edad[1]<1 || a.edad[1]>12);
if(a.edad[1] == 2)
{
if(bisiesto(a.edad[2]))
{
do
{
cout << "\nIngrese el dia de nacimiento (1-29): ";
op>>a.edad[0];
}while(a.edad[0] < 1 || a.edad[0] > 29);
}
else
{
do
{
cout << "\nIngrese el dia de nacimiento (1-28): ";
op>>a.edad[0];
}while(a.edad[0] < 1 || a.edad[0] > 28);
}
}
else
{
do
{
cout << "\nIngrese el dia de nacimiento (1-31): ";
op >> a.edad[0];
}while(a.edad[0]<1 || a.edad[0]>dias[a.edad[1]]);
}
do
{
cout << "\nIngrese el salario basico: ";
op >> a.salarioB;
}while(a.salarioB<0);
do
{
cout << "Ingrese su nivel de estudio(Mayuscula): ";
op >> a.NivelE;
} while (a.NivelE != 'T' && a.NivelE != 'P' && a.NivelE != 'E' && a.NivelE != 'M' && a.NivelE != 'D' );
do
{
cout << "Cual es su puntaje de investigacion: ";
op >> a.Ptj;
}while(a.Ptj<0);
}
这部分有错误,但是idk是什么问题
string nivel10()
{
return "arroba";
}
void academico::imprimir() const
{
cout << nivel10();
cout << "\nNombre: " << nombre;
cout << "\nCodigo: " << codigo;
cout << "\nFecha nacimiento: " << edad[0] << " De " << meses1[edad[1]] << " Año " << edad [2];
cout << "\nSalario Basico: " << salarioB;
cout << "\npuntaje: " << Ptj;
}
#endif /* ACADEMICO_H */
注意:Empleado.h只将参数传递给academico.h的构造函数
此代码的目标是向工作人员询问数据以计算他们的工资并显示它,但无论对“Level10”方法所做的修改,总是失败
主档
#include "academico.h"
using namespace std;
int main(int argc, char** argv) {
academico c;
cin >> c;
c.imprimir();
return 0;
}
错误:将'const academico'传递为'this'参数会丢弃限定符