Witam, przy uruchomieniu programu zbudownego z poniższego kodu, pojawia się błąd: pure virtual function call
#include <iostream>
#include <cstdlib>
#include <list>
using namespace std;
class baza
{
protected:
int a;
public:
baza(int x) : a(x) {};
virtual ~baza() {};
void pokaz() { cout << a << endl; }
virtual void metoda_wirtualna() = 0 ;
};
class pochodna : public baza
{
float b;
public:
pochodna(int x, float y) : baza(x), b(y) {};
~pochodna() {};
void metoda_wirtualna()
{
cout << "metoda wirtualna klasy pochodnej" << endl;
}
};
int main()
{
list <baza*> lista;
lista.push_back(&pochodna(5, 7.51));
lista.front()->metoda_wirtualna(); // <--- TUTAJ BŁĄD
system("pause");
return 0;
}
Błąd powoduje kod oznaczony komentarzem. Po jego usunięciu błędu nie ma. Dodam, że przy wołaniu funkcji pokaz() błędu nie ma:
lista.front()->pokaz();
Proszę o pomoc.