001
19.08.2002, 20:00 Uhr
uTaNG
|
Ich habe das mal so n bissel versucht, habe aber noch Probleme mit:
+ der Übersichtlichkeit bei der Ausgabe + eine Methode zur Überladung des + Operators + eine Ausgabefunktion zur Überladung des += Operators
würde mich freuen wenn ihr mir bei der Optimierung und der implementierung der beiden Methoden zum Überladen der oben genannten Operatoren behilflich seien könnt.
C++: |
// --------------------------------------------------- // geo.h // Anlegen einer einfachen Klasse. // --------------------------------------------------- #ifndef _GEO_ #define _GEO_
#include <string> using namespace std;
class Geo { private: int laengeng; // Längengrad string oname; // Ortsname int breiteng; // Breitengrad
public: Geo( int laengeng=0, const string& oname="noname", int breiteng=0); ~Geo(); void print();
const string& getOName() const { return oname; } int getLaengeng() const { return laengeng; } int getBreiteng() const { return breiteng; } bool setOName( const string& l) { if( l.size() < 1) // Kein leerer Name return false; oname = l; return true; } void setLaengeng( int n) { // Keine negative Gradzahl laengeng = n > 0 ? n : 0; } void setBreiteng( int b) { // Keine negative Gradzahl breiteng = b > 0 ? b : 0; } };
#endif // _GEO_
// --------------------------------------------------- // geo.cpp // Definition der Methode zur Überladung des + Operators // und des += Operators (noch hilfe bedürftig ...) // Konstruktor und Destruktor zeigen Aufrufe an. // ---------------------------------------------------
#include "geo.h" // Definition der Klasse
#include <iostream> #include <iomanip> using namespace std;
// globaler Zähler für die Objekte: //int anzahl = 0;
// Definition des Konstruktors und Destruktors:
Geo::Geo( int laengeng, const string& oname, int breiteng) { setLaengeng(laengeng); setOName(oname); setBreiteng(breiteng); //++anzahl; cout << "Es werden die Koordinaten für den Ort " << oname << " angelegt." << endl; } Geo::~Geo() { cout << "Die Koordinaten für den Ort " << oname << " werden zerstört." << endl; }
// Die Methode print() zeigt den Ort auf dem Bildschirm an. void Geo::print() { long savedFlags = cout.flags(); // Flags von cout merken cout << fixed << "~~~ o Koordinaten o ~~~\n\n" << "Orts-Daten:\n" << " Orts-Name ........: " << oname << '\n' << " Laengengrad ......: " << laengeng << '\n' << " Breitengrad ......: " << breiteng << '\n' << "__________________________________" << endl; cout.flags(savedFlags); // Alte Flags wieder herstellen
cout << " --- Weiter mit der Return-Taste --- "; cin.get(); }
// --------------------------------------------------- // geo_1.cpp // Die Klasse Geo testen. // ---------------------------------------------------
#include "geo.h" // Definition der Klasse
#include <iostream> #include <string> using namespace std;
void test();
// -- Objekte der Klasse Geo erzeugen und zerstören -- Geo geo1( 20,"Berlin", 53);
int main() { cout << "\nDie erste Anweisung in main().\n" << endl; Geo geo2( 55,"Erfurt", 19);
geo1.print(); geo2.print();
Geo& Ort = geo2; Ort.setLaengeng( 31); Ort.setOName("NeuerOrt"); Ort.setBreiteng( Ort.getBreiteng() - 10);
cout << "\nDie Koordinaten des Neuen Ortes:\n"; Ort.print();
cout << "\nDer erste Aufruf von test()." << endl; test();
cout << "\nDer zweite Aufruf von test()." << endl; test();
cout << "\nDie letzte Anweisung in main().\n" << endl;
return 0; }
void test() { Geo leip( 58, "Leipzig", 29); leip.print(); static Geo dre( 41, "Dresden", 9); dre.print(); cout << "\nDie letzte Anweisung in der Funktion test()" << endl; }
|
möchte mich schon mal für die Hilfe bedanken |