ho:C++: Come chiamare una funzione classe genitore dall'esterno
class A{
public:
virtual void foo();
};
class B : public A{
public:
void foo();
};
B *ptr = new B();
voglio chiamare Una di foo()
direttamente utilizzando il puntatore 'ptr'.
Quando provo
(A*)ptr->foo();
si chiama ancora la versione di B di foo()
. Come si chiama invece la versione di A?
È possibile? Quali sono le alternative? Grazie.
Dai un'occhiata a http://en.wikipedia.org/wiki/Scope_resolution_operator – Pramod
Puoi chiarire cosa intendi con "non ha funzionato"? Cosa succede esattamente quando provi il codice sopra? –
In questo modo si vanifica completamente lo scopo di rendere una funzione virtuale, quindi significa che l'utente della classe 'A' sta eludendo l'intento del progettista della classe. Questo probabilmente significa che c'è un errore di progettazione da qualche parte: o 'A' non fornisce tutte le funzionalità necessarie, o l'utente di' A' non capisce cosa si suppone che 'A' faccia. –