Ich steh grad irgendwie aufm Schlauch. Meine operator+=-Funktion hat n groben Wurm in sich, nur wie beheb ich den, wenn ich die Prototypen nich ändern will? (Dass die operator---Funktion noch fehlt, weiß ich. Das geht dann ja ganz schnell).
Vielen Dank im Voraus!
Vielen Dank im Voraus!
Code:
#include <iostream>
using namespace std;
const int N = 4;
class Produkt {
private:
char *artikel;
float preis;
public:
Produkt(char * a= "default", float p=0.0f);
~Produkt();
char * lies_artikel() { return artikel; }
float lies_preis(){ return preis; }
friend ostream& operator<< (ostream&, Produkt&);
};
//----------------------------------------------------------------------------------------------------------------------
class Einkaufswagen {
private:
Produkt *pProdukte[N];
int anzahl_Produkte;
float gesamt_preis;
public:
Einkaufswagen();
~Einkaufswagen();
void operator+=(Produkt& prod);
void operator--(int);
friend ostream& operator<< (ostream&, Einkaufswagen&);
};
//----------------------------------------------------------------------------------------------------------------------
Produkt::Produkt(char * a, float p) : preis(p){
artikel = new char [strlen(a)+1];
strcpy (artikel, a);
}
Produkt::~Produkt() {
delete [] artikel;
}
ostream& operator << (ostream &os, Produkt& p) {
os << "Produkt : " << p.artikel << ", Preis : " << p.preis<< endl;
return os;
}
//----------------------------------------------------------------------------------------------------------------------
Einkaufswagen::Einkaufswagen() {
anzahl_Produkte =0;
gesamt_preis = 0.0f;
}
void Einkaufswagen::operator +=(Produkt& prod) {
if (anzahl_Produkte <3) {
this->pProdukte[anzahl_Produkte] = & prod;
this->anzahl_Produkte++;
this->gesamt_preis+= prod.lies_preis();
}
}
ostream& operator << (ostream &os, Einkaufswagen& e) {
for(int i=0; i<e.anzahl_Produkte;i++)
os << "Produkt : " << e.pProdukte[i]->lies_artikel() << ", Preis : " << e.pProdukte[i]->lies_preis()<< endl;
os << "Gesamtanzahl Produkte : " << e.anzahl_Produkte << ", Gesamtsumme : " << e.gesamt_preis << endl;
return os;
}
//----------------------------------------------------------------------------------------------------------------------
void main() {
Produkt pr1("Hemd", 15.00);
Produkt pr2("Hose", 25.00);
Produkt pr3("Socken",5.00);
cout << pr3;
Einkaufswagen ekw;
ekw += pr1;
// ekw += pr2;
// ekw += pr3;
// cout << ekw;
}

