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! :-)