Mailinglist Archive: opensuse-programming-de (130 mails)

< Previous Next >
CPP - Problem mit ueberladene Operatoren
  • From: Paul Mitterberger <paul.mitterberger@xxxxxxx>
  • Date: Thu, 29 Apr 2004 23:22:27 +0200
  • Message-id: <200404292322.27990.paul.mitterberger@xxxxxxx>
Hallöchen,

arbeite mich gerade in C++ ein und habe da Probleme mit dem überladen des
<<-Operators für std::cout
Hier Auszüge aus dem Quellcode:

"ratio.h"
8< schnipp
// Ausgabe einer rationalen Zahl
std::ostream& operator<<(std::ostream&, const rational&);
8< schapp

"ratio.cpp"
8< schnipp
std::ostream& operator<<(std::ostream& out, const rational& r) {
out << r.zaehler << '/' << r.nenner;
return out;
}
8< schnapp

"main.cpp"
8< schnipp
// Funktion zum einfachen Testen inkl Ausgabe
void druckeTestfall(const rational &a, const rational &b) {
rational erg; // Ergebnis
std::cout << "\na = " << a;
std::cout << "\nb = " << b << std::endl;
erg += a;
std::cout << "+ = " << erg << std::endl;
erg = a + b;
}

int main() {
rational a,b;
std::cout << " Test der Eingabe\n";
std::cout << "Rationale Zahl a eingeben\n";
std::cin >> a;
std::cout << "Rationale Zahl b eingeben\n";
std::cin >> b;
druckeTestfall(a,b);
}
8< schnapp

Nun erhalte ich beim Compilieren folgende Meldung:
paumit@dg4:~/Documents/cppbuch/k09/ratio>g++ -Wall -o main main.cpp
/tmp/ccbthCqf.o(.text+0x32): In function `druckeTestfall(rational const&,
rational const&)':
: undefined reference to `operator<<(std::basic_ostream<char,
std::char_traits<char> >&, rational const&)'
/tmp/ccbthCqf.o(.text+0x5e): In function `druckeTestfall(rational const&,
rational const&)':
: undefined reference to `operator<<(std::basic_ostream<char,
std::char_traits<char> >&, rational const&)'
/tmp/ccbthCqf.o(.text+0x79): In function `druckeTestfall(rational const&,
rational const&)':
: undefined reference to `rational::operator+=(rational const&)'
/tmp/ccbthCqf.o(.text+0xa6): In function `druckeTestfall(rational const&,
rational const&)':
: undefined reference to `operator<<(std::basic_ostream<char,
std::char_traits<char> >&, rational const&)'
/tmp/ccbthCqf.o(.text+0xc4): In function `druckeTestfall(rational const&,
rational const&)':
: undefined reference to `operator+(rational const&, rational const&)'
/tmp/ccbthCqf.o(.text+0x1b5): In function `main':
: undefined reference to `operator>>(std::basic_istream<char,
std::char_traits<char> >&, rational&)'
/tmp/ccbthCqf.o(.text+0x1de): In function `main':
: undefined reference to `operator>>(std::basic_istream<char,
std::char_traits<char> >&, rational&)'
collect2: ld returned 1 exit status
paumit@dg4:~/Documents/cppbuch/k09/ratio>


Wo ensteht der Fehler, den ich übrigens ebenfalls erhalte, wenn ich die Lösung
compiliere. :-(

Ich verwende gcc-Version 3.3.1 (SuSE Linux ). SuSE 9.0

Grüße und noch einen schönen Abend

Paul
--
paul.mitterberger@xxxxxxx


< Previous Next >