一時的なものを理解しているので、次のコードは機能するはずですが、機能しません。
struct base
{
virtual~base() {}
virtual void virt()const=0;
};
struct derived:public base
{
virtual void virt()const {}
};
const base& foo() {return derived();}
int main()
{
foo().virt();
return 0;
}
virt() を呼び出すと、「pure virtual function called」エラーが発生します。それはなぜですか。どうすればよいですか。