Заранее извиняюсь, если эта тема уже поднималась и решалась.
Я хотел бы создать базовый класс с чистой виртуальной функцией (абстрактный класс), чтобы при создании производного класса от него пользователь был обязан реализовать тело этой функции в производном классе. Дело в том, что в чисто виртуальной функции хотелось бы иметь в качестве аргументов объекты производного типа. Это возможно ?
Например:
class Base{
public:
virtual void DoSomething (A object1, B object2) = 0;
};
class A: public Base{
public:
DoSomething(A x, B y) {
...
...
};
};
class B: public Base{
public:
DoSomething(A x, B y) {
...
...
};
};
Я пытался, но компилятор жалуется, что ничего не знает о производных классах, что я понимаю, поскольку они создаются после базового класса. Есть способ обойти? Или есть другой способ сделать то, что я хочу, то есть обязать пользователя реализовать тело функции в производном классе с аргументами arguments object типа производного класса?
Заранее спасибо !