Это
#include <iostream>
class Base1 {
public:
virtual void wonderFULL() = 0;
};
class Base2 {
public:
virtual ~Base2() {} // added so the code compiles
};
class Derived : public Base1, public Base2 {
virtual void wonderFULL() {std::cout << "wonderful\n";} // added so the code compiles
};
void magicFunction(Base2 *ptr) {
if (Base1 *b1 = dynamic_cast<Base1 *>(ptr))
b1->wonderFULL();
}
int main() {
Derived Wonder;
magicFunction(&Wonder);
return 0;
}
печатает wonderful
для меня.Я пришел к выводу, что вы не показываете код, необходимый для воспроизведения вашей проблемы.
Возьмите (копию) вашего фактического кода и, удаляя ненужный код, шаг за шагом перегоняйте его, пока вы не получите автономный (не требующий никаких других заголовков, кроме std lib), компилируемый пример, который воспроизводитпроблема.Очень вероятно, что вы найдете проблему при этом.Однако, если вы этого не сделаете, у вас есть идеальный случай для репродукции, чтобы вернуться сюда и спросить.