无法在没有对象的情况下调用成员函数std :: string Sportist :: getIme()

时间:2014-05-19 13:35:52

标签: c++ class member-functions

我有一个A类:

class Sportist{
    private:
        string ime;
        int godina_na_ragjanje;
        int godisna_zarabotuvacka_EUR;
    public:
        Sportist(string i, int g_n_r, int g_z_EUR){
            ime = i;
            godina_na_ragjanje = g_n_r;
            godisna_zarabotuvacka_EUR = g_z_EUR;
        }
        string getIme(){
            return ime;
        }
        int getGodinaNaRagjanje(){
            return godina_na_ragjanje;
        }
        int getGodisnaZarabotuvackaEUR(){
            return godisna_zarabotuvacka_EUR;
        }
};

B级使用A类公开:

class Fudbaler:public Sportist{
    private:
        int broj_na_odigrani_natprevari;
        int danocna_stapka;
    public:
        Fudbaler(string ime, int godina, int zarabotuvacka, int b, int d)
            :Sportist(ime, godina, zarabotuvacka)
        {
            broj_na_odigrani_natprevari = b;
            danocna_stapka = d;
        }
        float danok(){
            return getGodisnaZarabotuvackaEUR() * danocna_stapka;
        }
        friend ostream& operator<<(ostream &os, Fudbaler F){
            return os << "Ime: " << getIme() << endl
                      << "Godina na raganje: " << getGodinaNaRagjanje() << endl
                      << "Godisna zarabotuvacka(EUR): " << getGodisnaZarabotuvackaEUR() << endl
                      << "Danok sto treba da plati: " << danok();
        }
};

我在这些行中标题中描述了4个错误:

        return os << "Ime: " << getIme() << endl
                  << "Godina na raganje: " << getGodinaNaRagjanje() << endl
                  << "Godisna zarabotuvacka(EUR): " << getGodisnaZarabotuvackaEUR() << endl
                  << "Danok sto treba da plati: " << danok();

无法调用成员函数'std :: string Sportist :: getIme()'无对象

无法调用成员函数'int Sportist :: getGodinaNaRagjanje()'无对象

无法调用成员函数'int Sportist :: getGodisnaZarabotuvackaEUR()'无对象

无法调用成员函数'float Fudbaler :: danok()'没有对象

1 个答案:

答案 0 :(得分:1)

我会说该功能应改为

friend ostream& operator<<(ostream &os, Fudbaler F){
            return os << "Ime: " << F.getIme() << endl
                      << "Godina na raganje: " << F.getGodinaNaRagjanje() << endl
                      << "Godisna zarabotuvacka(EUR): " << F.getGodisnaZarabotuvackaEUR() << endl
                      << "Danok sto treba da plati: " << F.danok();
        }

我对std::streams的运算符重载不感兴趣。我通常在课外做过。从错误消息中,您需要使用传递的Fudbaler变量来访问它的方法。