#1 5. Juli 2010 [C/C++] - Brauche Hilfe bei einfachem C++ programm Hi ich habe ein kleines problem mit mein Code Code: # include <iostream> # include <string.h> # include <string> using namespace std; class Basic { private: int monat, jahr; string name,kreditkartNr; public: Basic(string name, string karteNr, int mn, int j) { name=name; kreditkartNr=karteNr; monat=mn; jahr=j; }; virtual void ausgabe(); }; class BasicPlusLimit: public Basic { private: double Kredeitlimit; public: BasicPlusLimit(string name, string karteNr, int mn, int j, double limit): Basic(name, karteNr, mn, j),Kredeitlimit(limit){}; virtual void ausgabe(); }; class Advanced: public BasicPlusLimit { private: float umsatz; public: Advanced(string name, string karteNr, int mn, int j, double limit, float umsatz): BasicPlusLimit(name,karteNr, mn, j, limit),umsatz(umsatz){}; virtual void ausgabe(); }; void Basic::ausgabe() { cout << "Inhaber: " << name << "\nKartennummer: " << kreditkartNr << "\nGueltig bis: " << monat <<"/" << jahr << endl; }; void BasicPlusLimit::ausgabe() { Basic::ausgabe(); cout << "Kreditlimit: " << Kredeitlimit << endl; }; void Advanced::ausgabe() { BasicPlusLimit::ausgabe(); cout << "Umsaetze: " << umsatz << endl; }; int main(void) { Basic *card[3]; float umsatz[3]={245.5, 1000.0, 75.25}; card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008); card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0); card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]); for (int i=0; i<2; i++) { card[i]->ausgabe(); cout << "----------------------------" << endl; } }: system("pause"); } ; und mein fehler Line 21 expected unqualified-id before ':' token Line 21 expected `,' or `;' before ':' token Line 81 expected declaration before '}' token wieso :? Danke schonmal + Multi-Zitat Zitieren
#2 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Code: # include <iostream> # include <string.h> # include <string> using namespace std; class Basic { private: int monat, jahr; string name,kreditkartNr; public: Basic(string name, string karteNr, int mn, int j) { name=name; kreditkartNr=karteNr; monat=mn; jahr=j; }; virtual void ausgabe(); }; class BasicPlusLimit: public Basic { private: double Kredeitlimit; public: BasicPlusLimit(string name, string karteNr, int mn, int j, double limit): Basic(name, karteNr, mn, j),Kredeitlimit(limit){}; virtual void ausgabe(); }; class Advanced: public BasicPlusLimit { private: float umsatz; public: Advanced(string name, string karteNr, int mn, int j, double limit, float umsatz): BasicPlusLimit(name,karteNr, mn, j, limit),umsatz(umsatz){}; virtual void ausgabe(); }; void Basic::ausgabe() { cout << "Inhaber: " << name << "\nKartennummer: " << kreditkartNr << "\nGueltig bis: " << monat <<"/" << jahr << endl; }; void BasicPlusLimit::ausgabe() { Basic::ausgabe(); cout << "Kreditlimit: " << Kredeitlimit << endl; }; void Advanced::ausgabe() { BasicPlusLimit::ausgabe(); cout << "Umsaetze: " << umsatz << endl; }; int main(void) { Basic *card[3]; float umsatz[3]={245.5, 1000.0, 75.25}; card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008); card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0); card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]); for (int i=0; i<2; i++) { card[i]->ausgabe(); cout << "----------------------------" << endl; } system("pause"); } Hattest quatsch in der Main Methode stehen + Multi-Zitat Zitieren
#3 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Kannst du mir sagen wo ? und wieso wird der name nicht angezeigt und der und die letzte klasse auch nicht ? Aber danke edit:// oke name habe ich selber + Multi-Zitat Zitieren
#4 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Code: int main(void) { Basic *card[3]; float umsatz[3]={245.5, 1000.0, 75.25}; card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008); card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0); card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]); for (int i=0; i<2; i++) { card[i]->ausgabe(); cout << "----------------------------" << endl; } [color=red] }:[/color] system("pause"); }[color=red] ;[/color] In den letzten 3 Zeilen, habs dir Rot eingefärbt. + Multi-Zitat Zitieren
#5 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm wieso geht das nicht Code: void Advanced::ausgabe() { BasicPlusLimit::ausgabe(); cout << "Umsaetze: "; for (int i=1; i<3;i++) { cout << umsatz[i]<< " " ; }; }; also bei umsatz mit ? + Multi-Zitat Zitieren
#6 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Was geht nicht ? Du musst schon bissel genauer werden. //EDIT Achso ich glaub ich weiß was du meinst, kann dran liegen das du das Array nur local in der Main Methode angelegt hast. PS: Weiß ja nicht ob du es für die Schule brauchst aber wenn würde ich mich mal Ordentlich hinten dran hängen. Das hier könnt dir helfen -> Galileo Computing :: C von A bis Z – 1 Einstieg in C musst ja nicht alles durchmachen aber die ersten Kapitel würden schon helfen + Multi-Zitat Zitieren
#7 5. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Ich würde mal behaupten, dass das net geht, weil umsatz kein Array ist: Code: ... class Advanced: public BasicPlusLimit { private: [B]float [/B]umsatz; ... Außerdem solltest du dir unbedingt angewöhnen: Objekte, wenn möglich, auf dem Stack anzulegen. Die werden nämlich automatisch gelöscht (google in dem Zusammenhang auch mal nach RAII). Beispiel: Code: Class object; // Stack Class *pObject = new object; // Heap, dynamisch, muss mit delete freigegeben werden! Mit "new" (dynamisch) erzeugte Objekte immer mit delete auch wieder freizugeben Wenn du verstanden hast, wie Arrays funktionieren, Ersatz-Klassen wie std::vector nehmen, die die Speicherverwaltung für dich machen + Multi-Zitat Zitieren
#8 7. Juli 2010 AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm Darf ich etwas ergänzen? Für erstens und zweitens gibt es auto_ptr. std::vector ist ein dynamisches Array und falls man sowas nicht braucht, wäre std::array eine bessere Wahl. Die beiden Sachen sind ein Teil vom C++ Technical Report 1 , weshalb man erstmal schauen muss, ob der eigene Compiler diese hat. Oder man nimmt Boost + Multi-Zitat Zitieren