Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
monkey
- Beiträge: 182
- Registriert: 29.06.2006 09:00:51
- Wohnort: Buxtehude
Beitrag
von monkey » 15.05.2009 23:55:25
Hallo zusammen bin gerade ein Programm für die UNI am schreiben das die grundlegenden Rechenarten mit komplexen Zahlen beherrschen soll. Das ganze muss in einer Klasse realisiert sein und die Operatoren + - * / << >> müssen überladen werden. Den Hauptteil habe ich nun fertig aber bei paar Sachen stehe ich ziemlich auf dem Schlauch ich hoffe ihr könnt mir helfen.
Main.cpp
http://nopaste.debianforum.de/21385
Komplex.h
http://nopaste.debianforum.de/21386
Code: Alles auswählen
In file included from Main.cpp:4:
Komplex2.h: In member function ‘komplex komplex::operator/=(komplex)’:
Komplex2.h:50: error: ‘((komplex*)this)->komplex::Realteil’ cannot be used as a function
Komplex2.h: In function ‘std::istream& operator>>(std::istream&, komplex&)’:
Komplex2.h:8: error: ‘double komplex::Realteil’ is private
Komplex2.h:105: error: within this context
Komplex2.h:9: error: ‘double komplex::Imaginaer’ is private
Komplex2.h:107: error: within this context
Komplex2.h:108: error: invalid initialization of reference of type ‘std::istream&’ from expression of type ‘komplex’
Zum einen beschwert sich der Compiler das ich eine private Variable versuche zu ändern, das sehe ich ja auch ein. Aber wie kann ich den vernünftig die Variablen einlesen. Die andere Fehlermeldung mit dem this Zeiger ist mit aber total suspekt. Danke im Voraus für die Hilfe.
Zuletzt geändert von
monkey am 20.05.2009 22:22:46, insgesamt 1-mal geändert.
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 16.05.2009 18:46:05
Zeile 50: Du hast da ein "Realteil()" stehen das eine Member-Variable und keine Funktion ist; ergo möchtest du stattdessen "Realteil" schreiben.
Für den Rest: Entweder du machst entsprechende set-Methoden:
Oder du erstellst einen Konstruktor der zwei Doubles (Real- und Imaginärteil) als Argumente akzeptiert.
Zeile 108: da musst du ein "return var;" hinschreiben und nicht k zurückgeben.
Im Übrigen hat die C++ STL schon eine Unterstützung für komplexe Zahlen; man könnte auch einfach die verwenden...
http://www.cplusplus.com/reference/std/complex/complex/
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy