Chce sobie zrobić tablicę/koszyk w której będe skłądował klasy.
ale program się wysypuje jeśli 3 razy dam funkcję Sprzedaj_Zawartosc_Koszyka()
#include <iostream>
using namespace std;
class Towar {
protected:
string nazwa;
public:
virtual void sprzedaj();
Towar(string nazwa)
: nazwa(nazwa)
{
// sprzedaj();
}
virtual ~Towar()
{
cout << "Destruktor Towar\n";
}
};
void Towar::sprzedaj()
{
cout << "Sprzedarz " << nazwa << endl;
}
class Towar_Spozywczy : public Towar {
protected:
string termin_waznosci;
public:
void sprzedaj();
Towar_Spozywczy(string nazwa, string waznosc)
: Towar(nazwa)
, termin_waznosci(waznosc){};
};
void Towar_Spozywczy::sprzedaj()
{
Towar::sprzedaj();
cout << ".Sprawdzenie terminu przydatnosci do spozycia\n";
}
class Towar_z_Gwarancja : public Towar {
protected:
string podbicie_gwarancji;
public:
void sprzedaj();
Towar_z_Gwarancja(string nazwa, string podbicie_gwarancji)
: Towar(nazwa)
, podbicie_gwarancji(podbicie_gwarancji){};
};
void Towar_z_Gwarancja::sprzedaj()
{
Towar::sprzedaj();
cout << ".Podbicie gwarancji\n";
}
class Koszyk {
public:
int i;
Towar* koszyk[10];
Koszyk(int i = 0){};
void Dodaj_Towar_do_Koszyka(Towar*);
void Sprzedaj_Zawartosc_Koszyka();
};
void Koszyk::Dodaj_Towar_do_Koszyka(Towar* towar)
{
if (i <= 9) {
koszyk[i] = towar;
++i;
}
}
void Koszyk::Sprzedaj_Zawartosc_Koszyka()
{
if (i >= 0) {
--i;
koszyk[i]->sprzedaj();
}
}
int main(int argc, char** argv)
{
Towar towarek1("jablko");
Towar_Spozywczy towarek2("pomarancza", "10.11.2017");
Towar_z_Gwarancja towarek3("sok", "3.11.1997");
Koszyk koszyk1;
koszyk1.Dodaj_Towar_do_Koszyka(&towarek1);
koszyk1.Dodaj_Towar_do_Koszyka(&towarek2);
koszyk1.Dodaj_Towar_do_Koszyka(&towarek3);
koszyk1.Sprzedaj_Zawartosc_Koszyka();
koszyk1.Sprzedaj_Zawartosc_Koszyka();
koszyk1.Sprzedaj_Zawartosc_Koszyka(); //
return 0;
}