pure virtual method called terminate called without an active exception