Diciamo che ho due classi:Ereditarietà: funzione che restituisce il tipo di auto?
class A
{
public:
A* Hello()
{
return this;
}
}
class B:public class A
{
public:
B* World()
{
return this;
}
}
E diciamo che ho un'istanza di B
classe in questo modo:
B test;
Se chiamo test.World()->Hello()
che avrebbe funzionato bene. Ma test.Hello()->World()
non funzionava dal Hello()
restituisce il tipo A
.
Come posso rendere Hello()
restituire il tipo di B
? Non voglio utilizzare una funzione virtual
poiché abbiamo oltre 20 classi diverse che ereditano A
.
20 classi diverse che ereditano A non sono così tante. Finirai con 20 vtbl e un vptr per istanza (supponendo che l'invio virtuale sia fatto in quel modo sul tuo compilatore). Sei così a corto di risorse che questo è davvero un problema? –
Pigrizia. Quando si aggiunge un metodo all'interno della classe A, si dovrebbe andare a tutte le classi e aggiungere lo stesso metodo. – Grapes