Hallo,
ich wollte zur Übung eine Klasse für Komplexe Zahlen schreiben und habe nun ein Problem bei einer Funktionsdeklaration einer Funktion, die einen string als Rückgabe hat:
(Die Problem-Funktion ist ganz unten)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
//ComplexNumber.h
#include <iostream>
#include <string>
class ComplexNumber {
private:
float real;
float imag;
public:
inline ComplexNumber(float r, float i) : real(r), imag(i) {
}
inline ComplexNumber(const ComplexNumber &cn) {
this->real= cn.real;
this->imag= cn.imag;
}
inline ComplexNumber operator + (const ComplexNumber &a) {
return ComplexNumber(this->real+a.real, this->imag+a.imag);
}
inline ComplexNumber operator - (const ComplexNumber &a) {
return ComplexNumber(this->real-a.real, this->imag-a.imag);
}
inline ComplexNumber operator * (const ComplexNumber &a) {
return ComplexNumber(this->real*a.real - this->imag*a.imag, this->real*a.imag + this->imag*a.real);
}
inline ComplexNumber operator / (const ComplexNumber &a) {
float x= a.real*a.real + a.imag*a.imag; // Nur einmal berechnen spart Rechenzeit^^)
float r;
float i;
r=(this->real*a.real + this->imag*a.imag) / (x);
i=(this->imag*a.real - this->real*+a.imag ) / (x);
return ComplexNumber(r,i);
}
void print();
string toString();
};
|
Die Fehlermeldung sieht so aus :
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
1>------ Erstellen gestartet: Projekt: ComplexNumber, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>ComplexNumber.cpp
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'toString'
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : warning C4183: 'toString': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.cpp(10) : error C2556: 'std::string ComplexNumber::toString(void)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int ComplexNumber::toString(void)'
1> e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42): Siehe Deklaration von 'ComplexNumber::toString'
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.cpp(10) : error C2371: 'ComplexNumber::toString': Neudefinition; unterschiedliche Basistypen
1> e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42): Siehe Deklaration von 'ComplexNumber::toString'
1>test.cpp
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'toString'
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\directx\projects\sonstiges\complexnumber\complexnumber.h(42) : warning C4183: 'toString': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>Code wird generiert...
1>Das Buildprotokoll wurde unter "file://e:\DirectX\Projects\Sonstiges\ComplexNumber\Debug\BuildLog.htm" gespeichert.
1>ComplexNumber - 8 Fehler, 2 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
|
Wenn ich die Funktion direkt in der .cpp Datei definiere gehts....
In der header Datei scheint der Typ string nicht zu funktionieren, obgleich der dazugehörige Header richtig eingebunden ist.
Ich kann in der Headerdatei auch keinen string definieren. Es kommt zu einem ähnlichen Fehler.
In der .cpp Datei geht es aber problemlos....
Die .cpp sieht so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include "ComplexNumber.h"
using namespace std;
void ComplexNumber::print() {
cout<<this->real<<"+"<<this->imag<<"i"<<endl;
}
string ComplexNumber::toString() {
return "test";
}
//string test="hallo"; --> das geht!! In der .h geht das nicht!
|
Kann mir jemand weiterhelfen?
Vielen Dank im voraus.