错误:将'const'作为'this'参数传递会丢弃限定符

时间:2017-09-24 21:47:47

标签: c++

这是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'参数会丢弃限定符

0 个答案:

没有答案