006
20.10.2017, 21:46 Uhr
ao
(Operator)
|
Zitat von Progger33: |
Ich denke das man die for Schleife doch nicht braucht und einfach den Speicher allokieren muss?
|
Recht so, guter Plan.
C++: |
CLottoTicket::CLottoTicket(string name, unsigned short maxTips ){ m_name = name; if(m_maxTips >=6){ m_maxTips = maxTips;
|
Du meinst hier wahrscheinlich if (maxTips ...) und nicht if (m_maxTips, richtig?
Aber da fehlt das else - was soll passieren, wenn man weniger als 6 übergibt?
C++: |
m_maxTips[m_tips]= maxTips; } }
|
Das hier ist leider Unsinn, m_maxTips ist kein Array, man kann es also nicht indizieren.
m_tips musst du noch zuweisen, das ist ein Pointer auf CTip. Der Name legt nahe, dass er mehrere Tips enthalten soll, und in der Anweisung steht noch was von allokiertem Array. Ahnst du was?
Ich muss übrigens mal wieder erwähnen, dass es ganz ganz doof ist, in C++ mit C-Style-Arrays zu hantieren. Die Aufgabe ist so gestellt, darum kannst du nix dran ändern, aber merk dir bitte für die Zukunft, für den Fall, dass du mal ein Kollege wirst, dass für solche Sachen die Containerklasse std::vector erfunden wurde. Die nimmt dir den ganzen Speicherverwaltungskram tutto kompletto ab, keine wildgewordenen Pointer und keine Speicherlecks mehr. Ich kann nicht verstehen, wieso an Unis immer noch dieser C-mit-Klassen-Schrott gelehrt wird. Als wären wir noch in den Achtzigern. |