Да, я понял. Все портит наследование B : public A.
Цитата Страуструп:
класс, который был поименован, но еще не был объявлен, нельзя использовать в качестве базового класса
|
Поэтому A должен быть объявлен до B. Но использование типа из класса B внутри его объявления обязывает компилятор знать полное объявление B, поскольку
Цитата Страуструп:
Явное или неявное преобразование указателя или ссылки на производный класс к указателю или ссылке на один из его базовых классов должно однозначно относиться к одному и тому же объекту этого базового класса
|
А класс A не знает, каким образом его наследует B.
Вообще Ваша задача решается объявлением еще одного класса - указателя на функцию и его использованием и в классе А и в классе В. Это не так красиво, как хотелось бы, но ИМХО, вариантов больше нет.