我有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;
        }
};


而使用公共类A的类B:

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()”

最佳答案

我会说功能应该更改为

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变量来访问它的方法。

关于c++ - 没有对象就无法调用成员函数std::string Sportist::getIme(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23739251/

10-11 18:20