Когда я запускаю следующий код, я получаю следующее аварийное завершение:
"чисто виртуальный метод с именем terminate вызван без активного исключения"
Я не понимаю, почему полиморфизм здесь не работает,Пожалуйста, кто-нибудь может мне помочь.
struct Base
{
virtual void print()=0;
virtual ~Base(){}
};
struct Derived: public Base
{
void print(){cout << "this is Derived\n";}
};
struct Foo
{
Foo(Base&& r): bref{r} {}
void print(){
bref.print();
}
Base& bref;
};
int main()
{
Foo f{Derived()};
f.print(); //it crashes here with above message
}