#include <iostream>
#include <stdlib.h>
using namespace std;
class silnik{
protected:
int moc;
int rozmiar;
public:
silnik *nast;
//////////konstruktor domysln
silnik():
moc(100), rozmiar(1500){}
/////////////////////konstruktor 2
silnik(int moc, int rozmiar):
moc(moc), rozmiar(rozmiar) {}
///////////////konstruktor kopiujacy
silnik(silnik &mk):
moc(mk.moc), rozmiar(mk.rozmiar) {}
////DESTR
~silnik() {delete this->nast;}
////setter
void setMoc(int moc) {this->moc = moc;}
void setRozmiar(int rozmiar) {this->rozmiar = rozmiar;}
//gettery
int getMoc () {
return moc;
}
int getRozmiar() {return rozmiar;}
////wypisz
void wypisz(){
cout << ".....................................\n";
//cout << "SILNIKI\n" << endl;
cout << "Moc: " << this->moc << endl;
cout << "Pojemnosc: " << this->rozmiar << "ccm" << endl;
}
};
class samochod{
protected:
int cena;
char* rodzajSilnika;
public:
samochod *nast;
//////////konstruktor domyslny
samochod():
cena(10000), rodzajSilnika("diesel") {}
//Konstruktor z argumentami
samochod(int cena, char* rodzajSilnika):
cena(cena), rodzajSilnika(rodzajSilnika) { }//samochod();
///////konstruktr kopiujacy
samochod(samochod &mk):
cena(mk.cena), rodzajSilnika(mk.rodzajSilnika) {}
///destruktor
~samochod() {delete this->nast;}
//setter
void setCena (int cena) {this->cena = cena;}
void setSilnik (char *rodzajSilnika) {this->rodzajSilnika = rodzajSilnika;}
///getery
int getCena() {return cena;}
char *getRodzaj() {return rodzajSilnika;}
////wypisywanie
void wypisz(){
cout << ".....................................\n";
//cout << "SAMOCHODY\n" << endl;
cout << "Cena: " << this->cena << "$" << endl;
cout << "Rodzaj silnika: " << this->rodzajSilnika << endl;
}
};
class urzadzenieop{
protected:
int waga;
int zoom;
char *matryca;
public:
urzadzenieop *nast;
////////k1
urzadzenieop():
waga(1), zoom(5), matryca("CCD") {}
//////k2
urzadzenieop(int waga, int zoom, char *matryca):
waga(waga), zoom(zoom), matryca(matryca){}
//////k2
urzadzenieop(urzadzenieop &mk):
waga(mk.waga), zoom(mk.zoom), matryca(mk.matryca){}
///destuktor
~urzadzenieop() {delete nast;}
//////setter
void setWaga(int waga) {this->waga = waga;}
void setZoom (int zoom) {this->zoom = zoom;}
void setMatryca (char *matryca) {this->matryca = matryca;}
//getery
int getWaga() {return waga;}
int getZoom() {return zoom;}
char *getMatryca() {return matryca;}
////wypisz
void wypisz(){
cout << ".....................................\n";
//cout << "\nAPARATY\n" << endl;
cout << "Waga: " << waga << endl;
cout << "Zoom: " << zoom << endl;
cout << "Matryca: " << this->matryca << endl;
cout << endl;
}
};
class osoba{
protected:
char *imie;
char *nazwisko;
char *mail;
public:
osoba *nast;
////k1
osoba():
imie("Adam"), nazwisko("Usiadek"), mail("[email protected]") {}
///k2
osoba(char *imie, char *nazwisko, char *mail):
imie(imie), nazwisko(nazwisko), mail(mail) {}
//k3
osoba(osoba &mk):
imie(mk.imie), nazwisko (mk.nazwisko), mail(mk.mail) {}
////destruktor
~osoba() {delete this->nast;}
////setter
void setImie(char *imie) {this->imie = imie;}
void setNazwisko (char *nazwisko) {this->nazwisko = nazwisko;}
void setMail (char * mail) {this->mail = mail;}
////getter
char *getImie() {return imie;}
char *getNazwisko () {return nazwisko;}
char* getMail() {return mail;}
//////wypisz
void wypisz(){
cout << ".....................................\n";
//cout << "OSOBY NA UCZELNIE\n" << endl;
cout << "Imie: " << imie << endl;
cout << "Nazwisko: " << nazwisko << endl;
cout << "mail: " << mail << endl;
cout << endl;
}
};
///././././././././././././././././././././././
class lista{
private:
silnik *silnikGlowa;
samochod *samochodGlowa;
urzadzenieop *urzadzenieGlowa;
osoba *osobaGlowa;
public:
lista():
silnikGlowa(NULL), samochodGlowa(NULL), urzadzenieGlowa(NULL), osobaGlowa(NULL){}
~lista (){
delete this->osobaGlowa;
delete this->samochodGlowa;
delete this->silnikGlowa;
delete this->urzadzenieGlowa;
}
void dodaj(silnik *dodaj){
if(this->silnikGlowa==NULL){
this->silnikGlowa=dodaj;
this->silnikGlowa->nast=NULL;
}else{
silnik *w;
for(w = this->silnikGlowa;w->nast!=NULL;w=w->nast);
w->nast=dodaj;
w->nast->nast=NULL;
}
}
void dodaj(samochod *dodaj){
if(this->samochodGlowa==NULL){
this->samochodGlowa=dodaj;
this->samochodGlowa->nast=NULL;
}else{
samochod *w;
for(w = this->samochodGlowa;w->nast!=NULL;w=w->nast);
w->nast=dodaj;
w->nast->nast=NULL;
}
}
void dodaj(urzadzenieop *dodaj){
if(this->urzadzenieGlowa == NULL){
urzadzenieGlowa = dodaj;
urzadzenieGlowa->nast = NULL;
}else{
urzadzenieop *w;
for(w = urzadzenieGlowa; w->nast != NULL ; w=w->nast);
w->nast = dodaj;
w->nast->nast=NULL;
}
}
void dodaj(osoba *dodaj){
if(this->osobaGlowa==NULL){
this->osobaGlowa=dodaj;
this->osobaGlowa->nast=NULL;
}else{
osoba *w;
for(w = this->osobaGlowa;w->nast!=NULL;w=w->nast);
w->nast=dodaj;
w->nast->nast=NULL;
}
}
void pokaz(){
silnik *a;
samochod *b;
urzadzenieop *c;
osoba *d;
cout << "\n\nSILNIKI\n" << endl;
for(a=this->silnikGlowa;a!=NULL;a=a->nast)
a->wypisz();
cout << endl;
cout << "\nSAMOCHODY\n" << endl;
for(b=this->samochodGlowa;b!=NULL;b=b->nast)
b->wypisz();
cout << endl;
cout << "\nURZADZENIA OPTYCZNE\n" << endl;
for(c=this->urzadzenieGlowa;c!=NULL;c=c->nast)
c->wypisz();
cout << endl;
cout << "\nOSOBY NA UCZELNI\n" << endl;
for(d=this->osobaGlowa;d!=NULL;d=d->nast)
d->wypisz();
cout << endl;
}
};
int main(){
silnik *s1 = new silnik();
silnik *s2 = new silnik(150, 1998);
silnik *s3 = new silnik(190, 2500);
silnik *s4 = new silnik(224, 3200);
silnik *kopia = new silnik;
kopia = s4;
samochod *sa1 = new samochod();
samochod *sa2 = new samochod(20000, "Benzyna");
samochod *sa3 = new samochod(30000, "diesel");
samochod *sa4 = new samochod(40000, "LPG");
//samochod *kopia1 = new samochod;
urzadzenieop *u1 = new urzadzenieop();
urzadzenieop *u2 = new urzadzenieop(1,10,"CMOS");
urzadzenieop *u3 = new urzadzenieop(2, 11, "CCD");
urzadzenieop *u4 = new urzadzenieop(1,5,"CCD");
osoba *o1 = new osoba();
osoba *o2 = new osoba("Janusz", "Polak", "[email protected]");
osoba *o3 = new osoba("Krystyna", "Kowalska", "[email protected]");
osoba *o4 = new osoba("Michal", "Nowak", "[email protected]");
lista *nowa = new lista();
nowa->dodaj(s1);
nowa->dodaj(s2);
nowa->dodaj(s3);
nowa->dodaj(s4);
nowa->dodaj(kopia);
nowa->dodaj(sa1);
nowa->dodaj(sa2);
nowa->dodaj(sa3);
nowa->dodaj(sa4);
nowa->dodaj(u1);
nowa->dodaj(u2);
nowa->dodaj(u3);
nowa->dodaj(u4);
nowa->dodaj(o1);
nowa->dodaj(o2);
nowa->dodaj(o3);
nowa->dodaj(o4);
nowa->pokaz();
delete nowa;
return 0;
}
Co się wyświetla w oknie konsoli? Po prostu te obiekty z int maina, prócz elemnetu który ma być kopią. A właśnie tego dotyczy moje pytanie. I chciałbym wywołać ten kostruktor kopiujący, a nie przypisać do obiektu kopia wartości obiektu kopiowanego.
Coś w tym stylu, tylko że pod mój program zrobiony na listach.
osoba KopiaPierwszejOsoby( * PierwszaOsoba );