Я планирую создать интерфейс (скорее виртуальный базовый класс в С++) с помощью метода, который принимает аргумент собственного типа.
class Base {
public:
virtual void seriousMethod(const Base &arg) = 0;
}
Полученный класс должен, однако, не принимать аргумент типа базового класса, а типа производного класса.
class Derived: public Base {
public:
virtual void seriousMethod(const Derived &arg) { /* ... */ }
}
Как бы я понял это? Должен ли я формировать базовый класс (например, Base<Derived>
) или есть более чистое решение?