supponiamo po 'di codice (legacy), che non può essere toccato, dichiarareutilizzando sorella eredità
struct B{
public:
void f(){}
};
e supponiamo di avere
struct A{
public:
virtual void f()=0;
};
è possibile fare una Una chiamata sottoclasse B :: f senza chiamare esplicitamente f(), vale a dire invece di
struct C: public A, public B{
void f(){
B::f();
}
};
avere qualcosa di simile
0.123.struct C:virtual public A,virtual public B{
};
(si noti che questa ultima classe è astratta, per il compilatore A :: F non è definito)
Cosa c'è che non va con 'B :: f()'? Questo è il modo corretto per chiamare 'B :: f()'. –
immagina di avere 100 funzioni;) –
No, non è possibile che le funzioni dei membri di base possano * implementare * pure funzioni virtuali per un'altra classe base. Questo non funziona. Quello che hai va bene –