Ho intenzione di creare un'interfaccia (piuttosto una classe base virtuale in C++) con un metodo che accetta un argomento del proprio tipo.Tipo di parametro funzione override con tipo di classe derivata
class Base {
public:
virtual void seriousMethod(const Base &arg) = 0;
}
La classe derivata non dovrebbe tuttavia prendere un argomento del tipo di classe base ma del tipo di classe derivata.
class Derived: public Base {
public:
virtual void seriousMethod(const Derived &arg) { /* ... */ }
}
Come posso realizzare questo? Dovrei specificare la classe di base (ad esempio Base<Derived>
) oppure esiste una soluzione più pulita?
Più precisamente - qual è la motivazione per farlo? –
"La classe derivata dovrebbe tuttavia non prendere un argomento del tipo di classe base ma del tipo di classe derivata" - qual è il punto di avere allora i metodi virtuali? – berak
@EdHeal Per essere specifico, una classe di nodo generico di ricerca A-Star che deve essere specificata dalle implementazioni derivate. – Appleshell