Podstawy programowanie obiektowego. Kłopot z metodą wirtualną.

0

Problem jest zapewne banalny, ale ja nie mogę na to wpaść. Chodzi mi o to, aby działała metoda wyświetlania danych w klasie osoba i klasach pochodnych. Przy funkcji zaprzyjaźnionej to działało, przy wirtualnej już nie.
Błąd wyskakuje przy zdefiniowaniu metody w 24 linijce.
Proszę o pomoc.

 #include <iostream>

using namespace std;

class osoba
{
  string imie;
  string nazwisko;
  string dataurodzenia;
  public:
  osoba(string imie, string nazwisko, string dataurodzenia);
  virtual void wypiszinfo() const;
};

osoba::osoba(string i, string n, string d)
  {
    imie = i;
    nazwisko = n;
    dataurodzenia = d;
  }

void wypiszinfo(osoba x)
{
    cout << "Imie: " << x.imie << "   Nazwisko: " << x.nazwisko << "   Urodzony: " << x.dataurodzenia;
}

class student:public osoba
{
    int rok;
    int grupa;
    int indeks;
public:
    virtual void wypiszinfo() const;

};

class pilkarz:public osoba
{
    string pozycja;
    string klub;
    int gole;
public:
      virtual void wypiszinfo() const;

};

int main()
{
    string a = "Marcin";
    string b = "Kundelek";
    string c = "10-11-1002";
    osoba x = osoba(a,b,c);
    wypiszinfo(*x);

    return 0;
}
2
#include <string>
#include <iostream>
using namespace std;
 
class osoba
  {
   string imie,nazwisko,dataurodzenia;
   public:
   osoba(string imie,string nazwisko,string dataurodzenia);
   virtual void wypiszinfo()const;
  };
 
osoba::osoba(const string &imie,const string &nazwisko,const string &dataurodzenia):
  imie(imie),nazwisko(nazwisko),dataurodzenia(dataurodzenia)
  {
  }
 
void osoba::wypiszinfo()const
  {
   cout<<"Imie: "<<imie<<" Nazwisko: "<<nazwisko<<" Urodzony: "<<dataurodzenia<<endl;
  }
 
int main()
  {
   osoba x("Marcin","Kundelek","10-11-1002");
   x.wypiszinfo();
   return 0;
  }
0

Jak robię wypiszinfo(x); to wyskakuje mi błąd w tej linijce

1 użytkowników online, w tym zalogowanych: 0, gości: 1