Anonymní profil Hunty – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Hunty – Programujte.comAnonymní profil Hunty – Programujte.com

 

Příspěvky odeslané z IP adresy 178.188.125.–

Hunty
C / C++ › Overriding virtual protected…
10. 3. 2016   #209196

Ahoj,
dostal jsem se k řešení problému při overridingu virtuální metody třídy, kterou znám jen jako pointer. Pro upřesnění uvedu příklad. 

class A
{
public:
    A(){};

    char getName()
    {
        return randomFunction();
    }

protected:
    virtual char randomFunction()
    {
        return 'A';
    }
};

class B: public A
{
protected:
    char randomFunction()
    {
        return 'B';
    }

};


int main()
{
    A *a = new A();
    B *b =  a;
    cout << b->getName() << endl;
}

b->getName() by měl tedy vrátit 'B'. Problém je v tom, že se mi to ani nezkompiluje. Napíše mi to:

error: invalid conversion from 'A*' to 'B*' 
     B *b =  a;
             ^

Jelikož znám pouze pointer třídy A, která obsahuje virtuální funkci, jak je možné tuto virtuální funkci "přepsat"? Jedná se mi o způsob, jakým lze přepsat virtuální funkce poiterů tříd, nehledám odpověď typu:


Když budeš mít kód:
B b;
cout << b.getName();
Vypíše ti to 'B';

Doufám, že jsem svůj problém dostatečně vysvětlil.
Děkuji za rychlé odpovědi! :-)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý