Ok to inaczej na podstawie przykładu z internetu napisałem sobie o taki przykład:
#include<iostream>
#include<string>
using namespace std;
class TSamochod{
string marka;
double pB, pM, zP ; //pojemność baku, prędkość maksymalna, zużycie paliwa
public:
TSamochod(string , double , double , double );
void jedz(float jakSzybko, float jakDaleko);
};
class TKabriolet: public TSamochod{
bool dach_otwarty;
public:
TKabriolet(string , double , double , double , bool dach_otwarty=false);
bool otworz_dach(bool dach_otwarty);
bool zamknij_dach(bool dach_otwarty );
void jedz(float jakSzybko, float jakDaleko);
};
class TSuv: public TSamochod{
public:
TSuv(string, double, double, double);
void jedz(float jakSzybko, float jakDaleko);
};
class TCiez: public TSamochod{
bool ladunek_jest;
public:
TCiez(string, double, double, double,bool ladunek_jest=false );
bool ladunek_jest(bool ladunek_jest);
bool ladunek_jest(bool brak_ladunek);
void jedz(float jakSzybko, float jakDaleko);
void ileczasu (float );
};
int main(int argc, char* argv[])
{
TSamochod audi("audi", 30, 185, 10.5);
TKabriolet alfa("alfa", 25, 140, 7.0);
TSuv jeep("jeep", 90,180,15.0);
TCiez man("man",500,95,25.0);
audi.jedz(160,1800);
alfa.jedz(110,1200);
jeep.jedz(190,900);
man.jedz(95,5000);
return 0;
}
TSamochod::TSamochod(string m, double pB , double pM , double zP )
{
marka=m;
this->pB=pB;
this->pM=pM;
this->zP=zP;
}
void TSamochod::jedz(float jakSzybko, float jakDaleko)
{
if(jakSzybko>=pM)
jakSzybko=pM;
cout<<"Samochod pojedzie z szybkoscia: "<<jakSzybko<<endl;
double zuzycie=(jakDaleko*0.01)*zP;
if(jakSzybko<(0.3*pM) || jakSzybko>(0.8*pM)) zuzycie+=zuzycie*0.2;
cout<<"Zuzycie paliwa: "<<zuzycie<<endl;
if(zuzycie<pB)
cout<<"Nie nalezy tankowac. "<<endl;
int ile=0;
if(zuzycie>pB)
{
while(zuzycie>0)
{
zuzycie-=pB;
ile++;
}
cout<<"Nalezy tankowac "<<ile<<" razy."<<endl;
}
cout<<"Podroz zajmie: "<<((ile*0.10)+(jakDaleko/jakSzybko))<<" godzin"<<endl;
}
TKabriolet::TKabriolet(string m, double pB, double pM, double zP, bool dach_otwarty): TSamochod(m,pB,pM,zP), dach_otwarty(dach_otwarty)
{}
void TKabriolet::jedz(float jakSzybko, float jakDaleko)
{
cout<<" \nDach Kabrioletu ";
dach_otwarty==true ? cout<<"otwarty"<<endl : cout<<"zamkniety"<<endl;
TSamochod::jedz(jakSzybko, jakDaleko);
}
bool TKabriolet::otworz_dach(bool dach_otwarty)
{
dach_otwarty=true;
return dach_otwarty;
}
bool zamknij_dach(bool dach_otwarty )
{
dach_otwarty=false;
return dach_otwarty;
}
void TCiez::jedz(float jakSzybko,jakDaleko)
cout<<" \n Czy Załadowany?";
ladunek_jest==true? cout<<"Ladunek"<<endl : cout<<"Brak"<<endl;
Tsamochod::jedz(jakSzybko, jakDaleko);
bool TCiez::Ladunek(bool ladunek_jest)
ladunek_jest=true;
return ladunek_jest;
bool TCiez::Brak_Ladunek(bool ladunek_jest)
ladunek_jest=false;
return ladunek_jest;
Ma on kilka zmiennych i teraz tak. Przed dodaniem zmiennej bool TCiez::Brak_Ladunek i zmiennnej bool TCiez::Ladunek wywalało bład
$(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
W devie. Wiem nie programuje sie w devie bo nie jest on już wspierany ale czy ktoś może powiedziec zy to tylko wina deva czy też samego kodu? NO i po dodaniu tych zmiennych i wpisaniu ich do kodu wynika ze program ma problemy z samą deklaracją tej zmiennej typu bool choć wdaje mi się że wzorowalem się na kodzie z dachu otwartego. Czy źle mniemam? Chyba ze znów mam złe założenia w programie program wg mnie powinien działać tak:
Do tego co mam podane wylicza aktualnie ile km przejechać mozna i ile razy trzeba tankować kabriolet przy otwartym i zamkniętym dachu. Po dopisce gdyby zaczął on trybić chciałbym uzyskać jeszcze ile km i ile razy trzeba tankować cieżarówkę...
Wiem póki co nie ma destruktora ale jak się uporam z tymi błedami o postaram się dopisać destruktor.