home *** CD-ROM | disk | FTP | other *** search
- //: C14:InheritStack2.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- //{L} ../C13/Stack4
- // Composition vs. inheritance
- #include "../C13/Stack4.h"
- #include "../require.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
-
- class StringList {
- Stack stack; // Embed instead of inherit
- public:
- void push(string* str) {
- stack.push(str);
- }
- string* peek() const {
- return (string*)stack.peek();
- }
- string* pop() {
- return (string*)stack.pop();
- }
- };
-
- int main() {
- ifstream file("InheritStack2.cpp");
- assure(file, "InheritStack2.cpp");
- string line;
- StringList textlines;
- while(getline(file,line))
- textlines.push(new string(line));
- string* s;
- while((s = textlines.pop()) != 0) // No cast!
- cout << *s << endl;
- } ///:~
-