Errata
zum Buch Objektorientiertes Programmieren in C++
Nicolai Josuttis
Die C++-Standardbibliothek
Eine detaillierte Einführung in die vollständige
ANSI/ISO-Schnittstelle
Hier sind die wichtigsten bekannten Fehler
und Inkonsistenzen der ersten Auflage des Buchs Die
C++-Standardbibliothek von Nicolai Josuttis aufgeführt:
Beispiel-Programme
Abschnitt 8.2.1, Seite 233/234, PRINT.h
betrifft fast alle Algorithmen-Beispiele Seitdem das Buch geschrieben wurde sind
die Compiler Standard-konformer geworden.
Somit kann es passieren, daß sich
die Beispiele nicht mehr übersetzen lassen, da in bspalgo/PRINT.h
ein Fehler gemeldet wird. Verbessern Sie PRINT.h
dazu wie folgt:
Entscheidend ist, daß mit typename
dem Compiler klar gemacht wird, daß const_iterator
ein Typ von T
ist.
Fehlender Header <functional>
In etlichen Beispielen (nämlich alle,
die Standard-Funktionsobjekte verwenden) fehlt die Einbidnung des Headers
<functional>:
#include <functional>
Dies betrifft:
Seite 241, bspalgo/find3.cc Seite 246, bspalgo/search3.cc
Außerdem muß hier "search"
durch "search_n"
ersetzt werden (siehe unten).
Seite 256, bspalgo/count1.cc Seite 262, bspalgo/misma1.cc Seite 270, bspalgo/transf1.cc Seite 272, bspalgo/transf2.cc Seite 277, bspalgo/replace1.cc Außerdem
static anzahl
= 0;
durch folgendes ersetzten:
static int anzahl
= 0;
Seite 279, bspalgo/replace2.cc Seite 282, bspalgo/remove1.cc Seite 286, bspalgo/unique1.cc Seite 300, bspalgo/part1.cc Seite 305, bspalgo/psort1.cc Seite 307, bspalgo/psort2.cc Seite 308, bspalgo/nth1.cc
search() und search_n()
Die zweite Form des Algorithmus search()
auf Seite 246 wurde im Rahmen der Standardisierung in search_n()
umbenannt. Damit muß auch das Beispiel search3.cc
auf Seite 247 entsprechend angepaßt werden.
STL-Container
Seite 152:
Statt:
... class Compare = less< T >,
...
muß es lauten:
... class Compare = less< Key >,
...
Iterator-Traits
generell:
Statt:
iterator_trait muß es lauten:
iterator_traits
Die Entscheidung, die sowohl lesenden
als auch schreibenenden Stream-Klassen zu entfernen, wurde korrigiert.
Somit sind die Template-Klassen basic_iostream<>,
basic_fstream<>
und basic_stringstream<>
mit den Realisierungen iostream,
wiostream,
fstream,
wfstream,
stringstream
und wstringstream
(doch) vorhanden.
Seite 499:
Der Ausgabe-Operator << ist falsch
implementiert.
Statt:
ostream& operator >> (ostream& strm, const Bruch&
b) muß es lauten:
ostream& operator << (ostream& strm, const
Bruch& b)\
Seite 505:
Die richtige Ausgabe von bspio/outbuf1.cc
lautet:
31 HEXADEZIMAL: 1F