C ++ chiamare il metodo virtuale nella classe figlio
-
19-09-2019 - |
Domanda
Ho le seguenti classi:
class A {
protected:
A *inner;
public:
....
virtual void doSomething() = 0;
....
}
class B: public A {
...
void doSomething() {
if(inner != NULL)
inner->doSomething();
}
...
}
Quando uso inner->doSomething()
ottengo un segmentation fault.
Cosa devo fare per chiamare inner->doSomething()
nella classe B?
grazie in anticipo.
Soluzione
Senza un'inizializzazione esplicita dell'elemento interno, è possibile per essere entrambi non NULL e scegliere invalide memoria. Ci può mostrare il codice che initalizes esplicitamente interiore?
Un costruttore appropriato per una sarebbe la seguente
protected:
A() : inner(NULL) {
...
}
Altri suggerimenti
anche se si assegna la A * essere lo stesso come il B inizializzato questo puntatore si otterrà un overflow dello stack ... Qual è il motivo è necessario l'interno? Non puoi semplicemente chiamare A :: DoSomething ()?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow