Witam. Moim zadaniem jest napisanie programu, który wczytuje od użytkownika studentów i pracowników uczelni po czym gdy użytkownik zakończy działanie programu uzyska wynik wpisanych danych. Problem mój tkwi w konstruktorze kopiowania i właściwie nie wiem czego dotyczy dlatego prosiłbym o pomoc w jego rozwiązaniu.
Pod koniec kodu, zaznaczyłem komentarzami miejsca wyrzucania błędu przez kompilator.
#include
#include
using namespace std;
/* ======== KLASA BAZOWA ======== */
class baza
{
protected:
char *imie;
char *nazwisko;
char *email;
public:
baza() : imie("asd"), nazwisko("asd"), email("asdad@wp.pl"){};
baza(char *a, char *b, char *c) : imie(a), nazwisko(b), email(c){};
baza(baza &dane) : imie(dane.imie), nazwisko(dane.nazwisko), email(dane.email){};
virtual void wypisz()
{
cout<<"Imie: "<
cout<<"Nazwisko: "<
cout<<"Email: "<
}
};
/* ============================== */
/* ======== KLASA POCHODNA - STUDENCI ======== */
class studenci : public baza // klasa pochodna
{
protected:
int nr_indeksu;
int rok_studiow;
public:
studenci(char *a, char *b, char *c) : baza(a,b,c) // konstruktor domyslny
{
imie = a;
nazwisko = b;
email = c;
nr_indeksu = 0;
rok_studiow = 0;
}
studenci(int d, int e, char *a, char *b, char *c) : baza(a,b,c) // konstruktor z parametrami
{
imie = a;
nazwisko = b;
email = c;
nr_indeksu = d;
rok_studiow = e;
}
studenci(studenci &dane, char *a, char *b, char *c) : baza(a,b,c) // konstruktor kopiujacy
{
imie = a;
nazwisko = b;
email = c;
nr_indeksu = dane.nr_indeksu;
rok_studiow = dane.rok_studiow;
}
void wypisz()
{
cout<<"Imie: "<
cout<<"Nazwisko: "<
cout<<"Email: "<
cout<<"Nr indeksu: "<
cout<<"Rok studiow: "<
}
};
/* ============================================ */
/* ======== KLASA POCHODNA - PRACOWNICY ======= */
class pracownicy : public baza
{
protected:
int prowadzone_przedmioty;
int grupy_studenckie;
int liczba_magistrantow;
public:
pracownicy(char *a, char *b, char *c) : baza(a,b,c) // konstruktor domyslny
{
imie = a;
nazwisko = b;
email = c;
prowadzone_przedmioty = 0;
grupy_studenckie = 0;
liczba_magistrantow = 0;
}
pracownicy(int f, int g, int h, char *a, char *b, char *c) : baza(a,b,c) // konstruktor z parametrami
{
imie = a;
nazwisko = b;
email = c;
prowadzone_przedmioty = f;
grupy_studenckie = g;
liczba_magistrantow = h;
}
pracownicy(pracownicy &dane, char *a, char *b, char *c) : baza(a,b,c) // konstruktor kopiujacy
{
imie = a;
nazwisko = b;
email = c;
prowadzone_przedmioty = dane.prowadzone_przedmioty;
grupy_studenckie = dane.grupy_studenckie;
liczba_magistrantow = dane.liczba_magistrantow;
}
void wypisz()
{
cout<<"Imie: "<
cout<<"Nazwisko: "<
cout<<"Email: "<
cout<<"Prowadzone przedmioty: "<
cout<<"Grupy studenckie: "<
cout<<"Liczba magistrantow: "<
}
};
/* ============================================ */
/* ======== ZMIENNE GLOBALNE ======== */
baza *tablica1[50];
studenci *tablica2[50];
pracownicy *tablica3[50];
char a[50],b[50],c[50];
int d,e,f,g,h,i;
int liczba_dodan_p=0, liczba_dodan_s=0;
/* ================================== */
/* ======== MAIN ======== */
int main()
{
int wybor;
char wybor2;
powrot:
cout<<"Witaj w bazie pracownikow i studentow!"<
cout<<"Co chcesz teraz zrobic?"<
cout<<"1. Dodac pracownika"<
cout<<"2. Dodac studenta"<
cout<<"3. Wypisac dane i zakonczyc program"<
cout<<"Wybor: ";
cin>>wybor;
if(wybor==1)
{
for(i=0; i<50 ; i++)
{
system("CLS");
cout<<"Podaj imie: ";
cin>>a;
cout<<"Podaj nazwisko: ";
cin>>b;
cout<<"Podaj email: ";
cin>>c;
cout<<"Prowadzone przedmioty: ";
cin>>f;
cout<<"Grupy studenckie: ";
cin>>g;
cout<<"Liczba magistrantow: ";
cin>>h;
cout<
tablica3[i] = new pracownicy(f, g, h, a, b, c);
liczba_dodan_p++; // sumuje liczbe wpisanych pracownikow
cout<<"Chcesz kontynuuowac dodawanie pracownika? [t/n]: ";
cin>>wybor2;
if(wybor2=='n')
{
system("CLS");
goto powrot;
}
}
}
if(wybor==2)
{
for(i=0; i<50 ; i++)
{
system("CLS");
cout<<"Podaj imie: ";
cin>>a;
cout<<"Podaj nazwisko: ";
cin>>b;
cout<<"Podaj email: ";
cin>>c;
cout<<"Nr indeksu: ";
cin>>d;
cout<<"Rok studiow: ";
cin>>e;
cout<
tablica2[i] = new studenci(d, e, a, b, c);
liczba_dodan_s++; // sumuje liczbe wpisanych osob
cout<<"Chcesz kontynuuowac dodawanie pracownika? [t/n]: ";
cin>>wybor2;
if(wybor2=='n')
{
system("CLS");
goto powrot;
}
}
}
if(wybor==3)
{
studenci obiekt1(tablica2, a,b,c); // <--- TUTAJ WYRZUCA BLAD
pracownicy obiekt2(tablica3, a,b,c); // <--- TUTAJ WYRZUCA BLAD
baza *wsk;
wsk=&obiekt1;
wsk->wypisz();
wsk=&obiekt2;
wsk->wypisz();
exit(0);
}
return 0;
}
/* ====================== */