dwhassom Geschrieben 3. Juni 2008 Geschrieben 3. Juni 2008 Hallo, helfen Sie mir dieses Programm zum schreiben. Ich bin noch nicht fertig aber es gibt ein Fehler an diese Stelle (:confused:) Programm Vereinbaren Sie bitte eine Klasse namens KlasseA und vereinbaren Sie darin die folgenden Elemente: 1. Ein privates Objektatrribut namens zahl vom Typ int. 2. Ein privates Klassenattribut namens anz vom Typ int. 3. Einen öffentlichen Standardkonstruktor, der das Attribut zahl mit 17 initialisiert und anz um 1 erhöht. 4. Einen öffentlichen Allgemeinkonstruktor mit einem int-Parameter, der das Attribut zahl mit seinem Parameter initialisiert und anz um 1 erhöht. 5. Einen öffentlichen Allgemeinkonstruktor mit einem string-Parameter s, der s mit atoi in einen int-Wert umwandelt, mit dem Ergebnis das Attribut zahl initialisiert und ausserdem anz um 1 erhöht. 6. Einen öffentlichen Kopierkonstruktor, der das neue Objekt mit demdoppelten Wert des zahl- Attributs des alten Objekts initialisert und anz um 1 erhöht. 7. Einen öffentlichen Destruktor, der anz um 1 vermindert. 8. Eine öffentliche Objektfunktion namens getZahl, die 0 Parameter hat und den Wert des Attributs zahl liefert. 9. Eine öffentliche Klassenfunktion namens getAnz, die 0 Parameter hat und den Wert des Attributs anz liefert. A4.2 Vereinbaren Sie bitte in derselben Quelldatei eine int main()-Funktion, deren Ausführung die folgende Ausgabe auf dem Bildschirm erzeugt. Ausgabe des Programms KlasseA: KlasseA: Jetzt geht es los! ----------------------------------- STANDARDkonstruktor, zahl: 17 ALLGEMEINkonstruktor 1, zahl: 23 ALLGEMEINkonstruktor 2, zahl: 10 KOPIERkonstruktor, zahl: 20 ----------------------------------- a1.getZahl() : 17 a2.getZahl() : 23 a3.getZahl() : 10 a4.getZahl() : 20 KlasseA::getAnz(): 4 ----------------------------------- ALLGEMEINkonstruktor 1, zahl: 15 ALLGEMEINkonstruktor 1, zahl: 30 ----------------------------------- a1.getZahl() : 15 a2.getZahl() : 30 ----------------------------------- KlasseA::getAnz(): 6 ----------------------------------- KlasseA::getAnz(): 4 ----------------------------------- KlasseA: Das war's! was Ich geschrieben habe: //Datei KlasseA.cpp #include<string> #include<iostream> using namespace std; //Definition der KlasseA class KlasseA { private: //Eigenschaften sind private und damit // gegen den direkten Zugriff geschuetzt int zahl; int anz; public: //Klassenelemente (Memberfunktionen) müssen public sein sonst // kann mit der Klasse nicht gearbeitet werden KlasseA(); //Standardkonstruktor (K1) KlasseA(int zahl, int anz); //Allgemeinerkonstruktor (K2) KlasseA(string * s); //Allgemeinerkonstruktor (K3) KlasseA(KlasseA const & a); //Kopier-Konstruktor (K4) ~KlasseA(); //Destruktor (D) public: //Objectelemente string getString(); //get-Methode void setString(string s); //set-Methode //Zuweisungs-Operator (=) KlasseA const & operator = (KlasseA const & zahl); //Inkrementierungs-Operator (++) bool operator == (KlasseA const & anz); private: //Objektelemente sind private und damit // gegen den direkten Zugriff geschuetzt string * atoi; //Attribut //Freunde //Ausgabeoperator friend ostream & operator << (ostream & os, KlasseA const & a); }; //KlasseA //Definition der Methoden der KlasseA //StandardKonstruktor (K1) KlasseA::KlasseA() { zahl = 17; //zahl initialisiert anz = anz++; //anz inkrementiert atoi = new string(" "); cout <<"K1:" << atoi << endl; } //Allgemeinerkonstrucktor (K2) KlasseA::KlasseA(int zahl, int anz) { atoi = new string(zahl, anz); cout <<"k2:" << atoi <<endl; } //Allgemeinerkonstruktor (K3) KlasseA::KlasseA(string * s) { (:confused:) atoi = new string(s); cout <<"K3:" << atoi << endl; } //Kopier-konstruktor (K4) KlasseA::KlasseA(KlasseA const & a) { atoi = new string(*t.atoi); cout <<"K4:" << atoi << endl; } //Destruktor (D) KlasseA::~KlasseA() { cout <<"D:" << atoi << endl; delete atoi; } string KlasseA::getString() //get-Methode return *atoi; } //getString void KlasseA::setString(string s) { //set-Methode *atoi = s; } //setString KlasseA const & KlasseA::operator = KlasseA const & zahl) { //Zuweisungs-Operator(=) *this->atoi = *zahl.atoi; return zahl; } //Operator (=) bool KlasseA::operator ++ (KlasseA const & anz) { //Inkremntierungs-operator (++) return *atoi ++ *anz.atoi; } //Operator (++) //AusgabeOperator << ostream & operator << (ostream & os, KlasseA const & a) { os << *a.atoi; return os; } //Operator << //Eine speicherhungrige Prozedur void machWas() { KlasseA a1(10*1000*1000, '!'); //10 MB gefüllt mit Ausrufezeichen cout << '.' << flush; //Ein Punkt '.' wird sofort ausgegeben } //machWas /---------------------------------------------------------- //int main() { cout <<"KlasseA: Jetzt geht's los!" << endl; Cout <<"STANDARDkonstruktor, zahl:" << endl; cout <<"ALLGEMEINERkonstruktor 1, zahl:" << endl; cout <<"ALLGEMEINERkonstruktor 2, zahl:" << endl; cout <<"KOPIERkonstruktor, zahl:" << endl; KlasseA a1("zahl:"); KlasseA a2("zahl:"); KlasseA a3("zahl:"); KlasseA a4("zahl:"); cout <<"a1.getZahl():" << a1.getZahl() << endl; cout <<"a2.getzahl():" << a2.getzahl() << endl; cout <<"a3.getzahl():" << a2.getZahl() << endl; cout <<"a4.getZahl():" << a2;getZahl() << endl; cout <<"KlasseA::getAnz():" << endl; cout <<"KlasseA : Das war's!" << endl; } Zitieren
Klotzkopp Geschrieben 3. Juni 2008 Geschrieben 3. Juni 2008 Hallo, helfen Sie mir dieses Programm zum schreiben. Ich bin noch nicht fertig aber es gibt ein Fehler an diese Stelle (:confused:)Du bist nicht nur nicht fertig, du hast auch die Aufgabe falsch verstanden. atoi ist eine Funktion, die du benutzen sollst, um den String in einen int umzuwandeln.Die Ausgaben sollen sicher nicht in main erzeugt werden, sondern durch die Klasse.Der markierte Fehler ist nicht der einzige.Bitte benutz beim nächsten Mal Code-Tags.Bitte stell konkrete Fragen. Zitieren
TDM Geschrieben 3. Juni 2008 Geschrieben 3. Juni 2008 #include<string> #include<iostream> using namespace std; class KlasseA { private: static int anz; int zahl; public: KlasseA(void):zahl(17) { anz++; cout << "Standardkonstruktor, zahl:" << zahl << endl; } KlasseA(int value):zahl(value) { anz++; cout << "Allgemeinkonstruktor 1, zahl:" << zahl << endl; } KlasseA(const char* strZahl) { anz++; zahl = atoi(strZahl); cout << "Allgemeinkonstruktor 2, zahl:" << zahl << endl; } KlasseA(const KlasseA& rhs) { anz++; this -> zahl = rhs.zahl << 1; cout << "Kopierkonstruktor, zahl:" << zahl << endl; } ~KlasseA() { anz--; } int getZahl() { return zahl; } static int getAnz() { return anz; } }; int KlasseA::anz = 0; int main() { cout <<"KlasseA: Jetzt geht's los!" << endl; KlasseA a1; KlasseA a2(23); KlasseA a3("10"); KlasseA a4(a3); cout <<"a1.getZahl():" << a1.getZahl() << endl; cout <<"a2.getzahl():" << a2.getZahl() << endl; cout <<"a3.getzahl():" << a3.getZahl() << endl; cout <<"a4.getZahl():" << a4.getZahl() << endl; cout <<"KlasseA::getAnz():" << KlasseA::getAnz() << endl; cout <<"KlasseA : Das war's!" << endl; cin.get(); return 0; } :floet: Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.