Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Implizite Wandlung eines Bruch-Objektes im Ausgabestrom

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.09.2006, 19:28 Uhr
Yadgar



High!

Nachdem ich schon vor längerer Zeit Wandlungsoperatoren für eine Bruchklasse FractInt programmiert hatte:


C++:
FractInt::operator bool() const
{
   cout << "Bool-Konversion!" << endl; // Testausgabe
   return isValid();
}

FractInt::operator const char*() const
{
   cout << "Stringkonversion!" << endl; // Testausgabe
   static char buf[32];
   sprintf(buf, "(%d, %d)", mZaehler, mNenner);
   return buf;
}



wundere ich mich, dass in


C++:
int main()
{
   FractInt f1(1, 2);
   FractInt f2(3, -3);

   cout << "Der Wert von f1 ist " << f1 << endl;
}



immer nur die Bool-Konversion aufgerufen wird (f1 wird 1)... sollte der Compiler nicht automatisch erkennen, dass ein char-Array bzw. string gewünscht wird?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.09.2006, 19:41 Uhr
0xdeadbeef
Gott
(Operator)


Nein, woher denn? Du kannst ja so ziemlich alles in einen ostream schieben. Bei eigenen Klassen macht man das dann normalerweise so:

C++:
// fractint.hh

class FractInt {
// ...
  friend std::ostream &operator<<(std::ostream &os, FractInt const &fi);
};

std::ostream &operator<<(std::ostream &os, FractInt const &fi);

// fractint.cc

std::ostream &operator<<(std::ostream &os, FractInt const &fi) {
  return os << '(' << fi.mZaehler << ", " <<  fi.mNenner << ')';
}


Das mit dem friend kannste auch sein lassen, wenn FractInt public-Methoden zur Verfügung stellt, mit denen man auf die Daten, die der operator<< braucht, zugreifen kann.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 13.09.2006 um 19:42 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: