Planuję utworzyć interfejs (raczej wirtualną klasę podstawową w języku C++) za pomocą metody, która pobiera argument z własnego typu.Zastępowanie typu parametru funkcji z typem klasy pochodnej
class Base {
public:
virtual void seriousMethod(const Base &arg) = 0;
}
Klasa pochodna nie powinna jednak przyjmować argumentu typu klasy bazowej, lecz typu klasy pochodnej.
class Derived: public Base {
public:
virtual void seriousMethod(const Derived &arg) { /* ... */ }
}
Jak mógłbym to zrozumieć? Czy musiałbym szablon klasy podstawowej (np. Base<Derived>
) lub czy istnieje czystsze rozwiązanie?
Co ważniejsze - na czym polega motywacja? –
"Klasa pochodna nie powinna jednak przyjmować argumentu typu klasy bazowej, ale typu klasy pochodnej" - o co w takim razie chodzi w ogóle o metody wirtualne? – berak
@EdHeal Aby być konkretnym, należy określić klasę węzła wyszukiwania A-Star, która ma być określona przez pochodne implementacje. – Appleshell