007
21.07.2011, 02:37 Uhr
0xdeadbeef
Gott (Operator)
|
std_lib_facilities.h ist ein Header, den Stroustrup in seinen Büchern verwendet, um bestimmte Dinge erst später erklären zu müssen (Namensräume zum Beispiel). Du hast da aber eine arg gekürzte Version davon; voll und ganz sieht er so aus.
Ich habe das Buch jetzt nicht gelesen, aber ist es vielleicht so, dass er diese gekürzte Version zu Anfang einmal zeigt, mit einer Bemerkung der Form "Der Header enthält einige Dinge, die in frühen Beispielen benutzt aber erst später erklärt werden, beispielsweise etwas ähnliches wie das hier:"? keep_window_open sieht nämlich eigentlich etwas komplexer aus (und muss das auch, aus Gründen, die wahrscheinlich nicht im ersten Kapitel erläutert werden).
Das Problem wird sein, dass du, um std::string verwenden zu können, neben <iostream> auch den Header <string> brauchst. Stroustrups Header bindet den schon ein, deine gekürzte Version nicht. Es wäre genug, ihn etwa so zu ändern:
C++: |
#ifndef STD_LIB_FACILITIES_GUARD #define STD_LIB_FACILITIES_GUARD 1
#include <iostream> #include <string> // <-- hier
using namespace std;
//------------------------------------------------------------------------------
// Auf manchen Windows-Maschinen muss keep_window_open() aufgerufen werden, // um zu verhindern, dass Windows das Fenster schließt, bevor Sie eine Chance hatten, // die Ausgabe zu lesen. inline void keep_window_open() { cin.get(); }
//------------------------------------------------------------------------------
#endif // STD_LIB_FACILITIES_GUARD
|
...aber du könntest natürlich auch gleich den nehmen, den Stroustrup dazu anbietet.
Übrigens würde diese vereinfachte Version von keep_window_open mit deinem Codebeispiel schon nicht mehr funktionieren - Rückstände im Eingabestrom. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 21.07.2011 um 02:38 Uhr von 0xdeadbeef editiert. |