[C++] 2 Fragen

Ja, habe ich schon, aber es sieht so aus, als wäre das sehr kompliziert... :D

Ich vereinfache grade die mpz_t Klasse und schreibe eine neue BigInt, die die Funktionen der mpz_t verwendet. Jetzt wollte ich einen operator<< für ostreams schreiben, aber ich bekomme 25 Fehler:
Code:
class BigInt{
...
    friend ostream &operator<< (ostream &out, BigInt &bi);
..
}
und BigInt.cpp:
Code:
ostream& operator<< (ostream& s, BigInt bi) {
    gmp_printf("%Zd", bi.value);
    return o;
}
Meine Fehlermeldungen:
Code:
1>Kompilieren...
1>BigInt.cpp
1>C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Downloads\gmp-dynamic-vc-4.1.2\gmp-dynamic\gmp.h(1565) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '&'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2433: 'ostream': 'friend' bei der Deklaration von Daten nicht zulässig
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2061: Syntaxfehler: Bezeichner 'ostream'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2805: Binärer Operator '<<' hat zu wenig Parameter
1>.\BigInt.cpp(4) : error C2143: Syntaxfehler: Es fehlt ';' vor '&'
1>.\BigInt.cpp(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\BigInt.cpp(4) : error C2086: 'int ostream': Neudefinition
1>        c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8): Siehe Deklaration von 'ostream'
1>.\BigInt.cpp(4) : error C2065: 's': nichtdeklarierter Bezeichner
1>.\BigInt.cpp(4) : error C2275: 'BigInt': Ungültige Verwendung dieses Typs als Ausdruck
1>        c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(7): Siehe Deklaration von 'BigInt'
1>.\BigInt.cpp(4) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'bi'
1>.\BigInt.cpp(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\BigInt.cpp(4) : error C2365: "operator <<": Erneute Definition; vorherige Definition war "Funktion".
1>.\BigInt.cpp(4) : error C2078: Zu viele Initialisierungen
1>.\BigInt.cpp(4) : error C2275: 'BigInt': Ungültige Verwendung dieses Typs als Ausdruck
1>        c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(7): Siehe Deklaration von 'BigInt'
1>.\BigInt.cpp(4) : error C2059: Syntaxfehler: ')'
1>.\BigInt.cpp(4) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>.\BigInt.cpp(4) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
1>Fibonacci.cpp
1>C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Downloads\gmp-dynamic-vc-4.1.2\gmp-dynamic\gmp.h(1565) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '&'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2433: 'ostream': 'friend' bei der Deklaration von Daten nicht zulässig
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2061: Syntaxfehler: Bezeichner 'ostream'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2805: Binärer Operator '<<' hat zu wenig Parameter

//Edit: Mit der mpz_t komme ich schon zurecht :)
 
Zuletzt bearbeitet:
Du hast bspw. unterschiedliche Signaturen (!)

Code:
class BigInt
{
    ostream &operator<< (ostream &out, BigInt &bi);
}

// BigInt.cpp:
    ostream &operator<< (ostream& s, BigInt bi)

Tipp: lies das, was in den Fehlermeldungen steht, dann kommst Du meist weiter (eventl. über die Hilfe)

Gruß
Klaus
 
Du hast bspw. unterschiedliche Signaturen (!)Tipp: lies das, was in den Fehlermeldungen steht, dann kommst Du meist weiter (eventl. über die Hilfe)
Die Signaturen habe ich ausgebessert, aber ich habe immer noch 21 Fehler :(:confused:
Code:
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '<<'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2433: 'ostream': 'friend' bei der Deklaration von Daten nicht zulässig
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2061: Syntaxfehler: Bezeichner 'ostream'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2805: Binärer Operator '<<' hat zu wenig Parameter
1>.\BigInt.cpp(4) : error C2143: Syntaxfehler: Es fehlt ';' vor '<<'
1>.\BigInt.cpp(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\BigInt.cpp(4) : error C2086: 'int ostream': Neudefinition
1>        c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8): Siehe Deklaration von 'ostream'
1>.\BigInt.cpp(4) : error C2065: 'out': nichtdeklarierter Bezeichner
1>.\BigInt.cpp(4) : error C2065: 'bi': nichtdeklarierter Bezeichner
1>.\BigInt.cpp(4) : error C2275: 'BigInt': Ungültige Verwendung dieses Typs als Ausdruck
1>        c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(7): Siehe Deklaration von 'BigInt'
1>.\BigInt.cpp(4) : error C2448: '<<': Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
1>Fibonacci.cpp
1>C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Downloads\gmp-dynamic-vc-4.1.2\gmp-dynamic\gmp.h(1565) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '<<'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2433: 'ostream': 'friend' bei der Deklaration von Daten nicht zulässig
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2061: Syntaxfehler: Bezeichner 'ostream'
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\fibonacci\fibonacci\BigInt.h(8) : error C2805: Binärer Operator '<<' hat zu wenig Parameter
 
Danke, aber das wollte ich schon machen, so zum Verständnis und um mich mit GMP zu beschäftigen...:)
Woher kommen denn die Fehlermeldungen?
 
Zurück