005
11.11.2012, 13:30 Uhr
ao
(Operator)
|
C++: |
class Kofferraum { private: unsigned int Gesamtgewicht; unsigned int Gesamtwert; vector<Koffer*> *Inhalt; // HIER public: Kofferraum(unsigned int, unsigned int); ~Kofferraum(); void add_Koffer(Koffer*); unsigned int get_Gesamtgewicht() const; unsigned int get_Gesamtwert() const; Koffer* get_Inhalt(int); }
|
Überdenk das Design noch mal:
1. Warum ist Inhalt ein Pointer auf einen Vektor? Warum ist es nicht der Vektor selbst?
2. Warum enthält der Vektor nur Pointer auf Koffer? Wenn man davon ausgeht, dass du nur tatsächlich existierende Koffer einlädst, dann solltest du besser Referenzen auf Koffer nehmen. add_Koffer hätte dann auch ein Koffer& als Parameter, und was du bei Koffer * get_Inhalt zurückgeben willst, ist mir nicht ganz klar. Etwa Inhalt->data?
3. Wenn sich Gesamtgewicht und Gesamtwert unmittelbar durch Aufsummierung aus dem Inhalt ergeben, dann ist die Extra-Speicherung redundant, und das sollte eigentlich vermieden werden. Es sei denn, es gibt wichtige Gründe, die dafür sprechen (Performance z.B.), aber die sollte man dann konkret benennen können.
Außerdem, nur aus Interesse: Welche Bedeutung haben die beiden Parameter des Kofferraum-Konstruktors? |