S. 34 ganz unten: Statt "beiden Operatoren" muss es "zwei Operanden" heißen.
S. 41, Listing 1.11 unten: Bitte fügen Sie nach #include
<iostream>
die Zeile #include <string>
ein
(auch wenn Ihr Compiler das Fehlen nicht bemängelt).
S. 43, zweite Zeile: Ersetzen Sie die Variable c
durch ein
.
S. 60, Text unter dem Listing: Die Schleife beginnt natürlich in Zeile 6. Die Abfrage wird wiederholt, solange die Eingabe fehlerhaft ist ("nicht" streichen).
S. 84, oberes Drittel: Fügen Sie direkt nach der Zeile cin
>> dateiname;
die Zeile cin.ignore(100,'\n');
ein,
um das Zeilenendezeichen '\n'
aus dem Tastaturpuffer zu
entfernen. cin.ignore(N,'\n');
entfernt alle Zeichen aus dem
Tastaturpuffer bis zum Zeilenendezeichen '\n'
, aber maximal
N. Das Zeilenendezeichen wird mit entfernt.
S. 105 Mitte und S. 234, Listing 9.13: In constexpr const
usw. ist const
überflüssig.
S. 237, Quiz Fragen b) und c). Die Fragen sind falsch gestellt.
Sie lauten richtig:
b) Vom Typ des Objekts, auf das ein Zeiger
verweist, über den die Funktion aufgerufen wird.
c) Vom Typ des
Objekts, auf das eine Referenz verweist, über die die Funktion
aufgerufen wird.
Die Begründung ist im grauen Kasten auf S. 222 zu finden.
S. 306: Die Parameter sind falsch. Listing 13.3. muss ersetzt werden durch
template <> bool kleiner(const bool& a, const bool& b) { assert(false && "Vergleich von bool-Variablen ist nicht sinnvoll. Abbruch!\n"); return a < b; }
Das in Listing 13.3 ursprünglich vorhandene static_assert
schlägt bei jeder Compilation fehl, auch wenn das Template nicht
instantiiert wird. Der Grund: Das Argument von static_assert
hängt nicht von einem Template-Parameter ab. Mit der Änderung wird das
Programm zur Laufzeit nur bei einem Aufruf der Funktion
kleiner(a,b)
mit bool
-Argumenten a
und
b
abgebrochen.
Es gibt Möglichkeiten, schon zur Übersetzungszeit eine Fehlermeldung zu erzeugen, aber das setzt eine Änderung des Templates in Listing 13.2 (S. 304) voraus und erfordert in diesem Buch nicht behandelte C++-Elemente. Listing 13.4. muss ersetzt werden durch
template <> bool kleiner(const char* const& a, const char* const& b) { return std::strcmp(a, b) < 0; }
S. 372: Die Installation von SFML kann bei vielen Linux-Systemen
einfach mit apt install libsfml-dev
(z.B. bei Linux Mint) erledigt werden.
Der aufwendige "Selbstbau" entfällt dann.