Witam probowałem zrobic zadanie ale nie rozumiem tej linijki t[1].skoczek()= "Adam" + t[1].skoczek(); . Czy powinnienem zrobic metode skoczek() jako metode klasy ktora przyjmie string a nastepnie to sumuje z polem dynamicznym nazwisko. Przede wszystkim nie rozumiem tej czesci: t[1].skoczek()= "Adam" + t[1].skoczek();
Probowalem cos w tym stylu :
car& skoczek(const string& nn){
*nazwisko = nn + *nazwisko;
return *this;
}
#include <iostream>
#include <iostream>
using namespace std;
class car{
string* nazwisko;
double przebieg;
public:
car():nazwisko(new string),przebieg(0){}
car(const string& n,const double p):nazwisko(new string(n)),przebieg(p){}
car(const double r):przebieg(r){};
const car& operator=(const car& ob);//!!
string& kierowca(){return *nazwisko;}
const string& kierowca()const {return *nazwisko;}
double& kilometry(){return przebieg;}
const double& kilometry()const{return przebieg;}
friend ostream& operator << (ostream& out,const car& ob);
const car& operator+=(const double l){kilometry()=kilometry()+l; return *this;}//!!
const car& operator+=(const string& nazz){kierowca()=kierowca()+ nazz; return *this;}
car& skoczek(const string& nn){
*nazwisko = nn + *nazwisko;
return *this;
}
};
ostream& operator << (ostream& out,const car& ob){
out << *ob.nazwisko << " " << ob.przebieg <<endl;
return out;
}
const car& car::operator=(const car& ob){
if(this!=&ob){
nazwisko = new string;
*nazwisko = *ob.nazwisko;
przebieg = ob.przebieg;
return *this;
}else{return* this;}
}
int main()
{
car* wsk = new car("Nowak", 5555.5);
car ob2(*wsk), t[3];
const car ob3("Kot", 10000.0);
delete wsk;
wsk = new car("Kowalski", 22000.2);
t[0]=ob2;
t[1].kierowca()=ob3.kierowca();
t[1].kilometry()=ob3.kilometry();
t[2].kierowca()=wsk->kierowca();
t[2].kilometry()=wsk->kilometry()+1000;
for(int i=0; i<3; ++i)
cout << t[i];
cout << "****** *****"<< endl;
for(int i=0; i<3; ++i) {
t[i]+=1000;
cout << t[i];
}
cout << "****** *****"<< endl;
// ma być
t[0]+="Jan"; // Imię Nazwisko
/* t[1].skoczek()= "Adam" + t[1].skoczek();
t[2].skoczek()= "Kamil" + t[2];
for(int i=0; i<3; ++i)
cout << t[i];
cout << "****** *****"<< endl;*/
return 0;
}