A więc COsoba.h :
#ifndef COsoba_H
#define COsoba_H
#include <string>
using namespace std;
class COsoba
{
friend ostream& operator<<(ostream& os, const COsoba& u);
private:
int nrID;
string imie;
string nazwisko;
double stanKonta;
static int nrIDWolny;
public:
COsoba();
COsoba(string, string, double);
~COsoba();
int getNr();
string getImie();
string getNazwisko();
double getStanKonta();
void wplata(double kwota);
void setImie(string imie_s);
void setNazwisko(string nazwisko_s);
string toString();
};
#endif
COsoba.cpp :
#include <iostream>
#include <sstream>
#include "COsoba.h"
using namespace std;
int COsoba::nrIDWolny = 0;
COsoba::COsoba(){
nrID = 0;
imie = "imie";
nazwisko = "nazwisko";
stanKonta = 0.0;
nrIDWolny++;
}
COsoba::COsoba(string imie_f, string nazwisko_f, double stanKonta_f) {
nrID = nrIDWolny;
imie = imie_f;
nazwisko = nazwisko_f;
stanKonta = stanKonta_f;
nrIDWolny++;
};
COsoba::~COsoba() {
cout << "Dane zostaly usuniete" << endl;
}
int COsoba::getNr(){
return nrID;
}
string COsoba::getImie(){
return imie;
};
string COsoba::getNazwisko(){
return nazwisko;
}
double COsoba::getStanKonta(){
return stanKonta;
}
void COsoba::wplata(double kwota){
stanKonta = kwota;
}
void COsoba::setImie(string imie_s) {
imie = imie_s;
};
void COsoba::setNazwisko(string nazwisko_s) {
nazwisko = nazwisko_s;
};
string COsoba::toString() {
stringstream ss, ss2;
string str, str2, ret;
ss << nrID;
ss >> str;
ss2 << stanKonta;
ss2 >> str2;
ret = str + " " + imie + " " + nazwisko + " " + str2;
return ret;
};
CWycieczka.h :
#ifndef CWycieczka_H
#define CWycieczka_H
#include <string>
#include <vector>
#include "COsoba.h"
using namespace std;
class CWycieczka{
private:
int nrID;
string nazwa;
double cena;
vector <COsoba*> uczestnicy;
static int nrIdWolny;
public:
CWycieczka();
CWycieczka(string, double);
~CWycieczka();
int getNrId();
int getIleZapisanych();
string toString();
void dodajUczestnika(COsoba* uczestnik);
void usunUczestnika(int nrKlienta);
void pokazListeUczestnikow();
};
#endif
CWycieczka.cpp :
#include <iostream>
#include <vector>
#include <sstream>
#include "CWycieczka.h"
using namespace std;
int CWycieczka::nrIdWolny = 1;
CWycieczka::CWycieczka() {
nazwa = "Wycieczka_bez_nazwy";
cena = 0.0;
};
CWycieczka::CWycieczka(string nazwa_f, double cena_f) {
nazwa = nazwa_f;
cena = cena_f;
}
CWycieczka::~CWycieczka() {
cout << "Uzyto destruktora na CWycieczka" << endl;
}
void CWycieczka::dodajUczestnika(COsoba* uczestnik){
uczestnicy.push_back(uczestnik);
};
string CWycieczka::toString() {
stringstream ss_c;
string nazwa_s,ret;
ss_c << cena;
ss_c >> nazwa_s;
ret = nazwa + " " + nazwa_s;
return ret;
};
void CWycieczka::usunUczestnika(int nrKlienta){
uczestnicy.erase(uczestnicy.begin() + nrKlienta);
};
ostream &operator << (ostream & os, const COsoba & u) {
os << u.nrID << " " << u.imie << " " << u.nazwisko << " " << u.stanKonta;
return os;
}
void CWycieczka::pokazListeUczestnikow() {
for (int i = 0; i < uczestnicy.size(); i++)
{
cout << *(uczestnicy[i]) << endl;
}
}
main.cpp :
#include <iostream>
#include <string>
#include "COsoba.h"
#include "CWycieczka.h"
#include "CBiuro.h"
int main()
{
cout << "CYK CYK CYK" << endl;
COsoba *os1 = new COsoba();
cout << os1->toString() << endl;
COsoba *os2 = new COsoba("Adam", "Nowak", 10.0);
cout << os2->toString() << endl;
os1->setImie("Piotr");
os1->setNazwisko("Kosiorek");
os2->wplata(200.0);
cout << os1->toString() << endl;
cout << os2->toString() << endl;
CWycieczka *wyc1 = new CWycieczka();
cout << wyc1->toString() << endl;
CWycieczka *wyc2 = new CWycieczka("Panama", 100);
cout << wyc2->toString() << endl;
wyc2->dodajUczestnika(os2);
wyc2->pokazListeUczestnikow();
delete os1;
delete os2;
delete wyc1;
delete wyc2;
system("pause");
return 0;
}
CBiuro jest nieskończone ale ono nie jest potrzebne do CWycieczka.