no matching function call to
-
zeile 19 ist hier zeile 16 (weil ich die includes weggelassen habe)
-
Kann eigentlich nicht sein. Was ist denn "tm"?
-
-
Der Konstruktor von Veranstaltung ruft 20 Standard Konstrukoren von Karten auf. Im Funktionsrumpf erfolgt dann eine Zuweisung.
Karten braucht also noch einen StandardkonstruktorKarten() :p_caname(0),p_price(0) {}
-
so nun ist mein weiteres problem dass wenn ich z.B.
char*DatumAusgeben()aufrufe und danach eine andere Funktion aufrufen will stürtzt es ab
-
brotbernd schrieb:
Karten braucht also noch einen Standardkonstruktor
Oder du bastelst dir keine hässlichen Workarounds wie Dummy-Standardkonstruktoren und benutzt elegantere Wege. Einer davon wäre für mich
std::vectorstatt eines Arrays, den du sukzessive mit den Karten füllst. Dann musst du dir nämlich auch nicht in einer separaten Variable die Anzahl merken. Eine Einführung in die STL findest du hier.Dann könnte die For-Schleife so aussehen:
for(int i=0; i < AnzKarten; ++i) { KartenArray.push_back(Karten("Hallo",2.00)); }wobei die Deklaration des Containers so aussieht:
std::vector<Karten> KartenArray;Ausserdem würde ich anstelle von
char*,sprintf()und solchen C-Dingen moderne C++-Mittel wiestd::stringundstd::stringstreameinsetzen. Dann hast du mehr Sicherheit, sowohl zur Compile- als auch zur Laufzeit.
-
ist dass die Lösung für mein 2. Problem?
-
Ja, du zerschreibst dir nämlich mit
sprintf()den Speicher, da du auf einen uninitialisierten Zeiger zugreifst. Klar, man könnte dafür Speicher anfordern, aber man müsste wieder genau darauf achten, dass genügend vorhanden wäre, damit eventuelle Änderungen an der Klasse nicht plötzlich merkwürdiges Programmverhalten hervorrufen. Ausserdem musst du darauf achten, dass der angeforderte Speicher wieder freigegeben wird. Man muss dem Aufrufer der Funktion kommunizieren, dass er verantwortlich dafür ist, und trotzdem kann es sehr leicht vergessen werden.Das sind alles Probleme, welche dir mit
std::stringnicht passieren können.
-
danke also hab ich einfach nur malloc vergessen?
-
klg71 schrieb:
danke also hab ich einfach nur malloc vergessen?
Ja. In C++ aber eher
new.Aber ich habe dich auf etliche andere Probleme hingewiesen. Wenn dir etwas an modernem C++ und sauberem Design gelegen ist, solltest du die Hinweise vielleicht beherzigen. Wenn du gerne debuggst und dich mit Low-Level-Fehlern rumschlägst, solltest du sie ignorieren.
-
gut ixh werde mir sie annehmen aber es wird bestimmt eine weile dauern bisschen ich den C-Stil wieder weg hab:)

-
Hm, hast du ein gutes C++-Buch wie den C++-Primer? Dort sollten solche Dinge eigentlich von Anfang an erklärt werden. Auch die STL (Standard Template Library) ist ein sehr wichtiger Bestandteil der C++-Standardbibliothek. In meinem ersten Post habe ich dir dazu einen Link gegeben, der die wichtigsten Dinge erläutert.
-
ja ich hab den link gesehen nein ich habe leider kein buch:D
alles aus dem inet