OStackTest.cpp

IdĽ do dokumentacji tego pliku.
00001 /*
00002   Name: DL programowanie zadanie 15 z rozdziału 16 książki Thinking in C++
00003   Author: Piotr Leżoń
00004   Date: 27-06-06 19:28
00005   Description: Zmodyfikuj programy C15:OStack.h oraz C15:OStackTest.cpp,
00006 przekształcając klasę Stack w szablon, dzięki czemu będzie on automatycznie
00007 wielokrotnie dziedziczył zarówno po zawartej w nim klasie, jak i po klasie
00008 Object. Skonkretyzowana klasa Stack powinna pobierać i zwracać wyłącznie
00009 wskaźniki zawartego w niej typu.
00010 */
00011 //: C15:OStackTest.cpp
00012 // From Thinking in C++, 2nd Edition
00013 // Available at http://www.BruceEckel.com
00014 // (c) Bruce Eckel 2000
00015 // Copyright notice in Copyright.txt
00016 //{T} OStackTest.cpp
00017 #include "OStack.h"
00018 #include "require.h"
00019 #include <fstream>
00020 #include <iostream>
00021 #include <string>
00022 using namespace std;
00023 
00024 // Use multiple inheritance. We want 
00025 // both a string and an Object:
00026 class MyString: public string, public Object {
00027 public:
00028   ~MyString() {
00029     cout << "deleting string: " << *this << endl;
00030   }
00031   MyString(string s) : string(s) {}
00032 };
00033 
00034 int main(int argc, char* argv[]) {
00035   requireArgs(argc, 1); // File name is argument
00036   ifstream in(argv[1]);
00037   assure(in, argv[1]);
00038   Stack<Object> textlines;      
00039   string line;
00040   // Read file and store lines in the stack:
00041   while(getline(in, line))
00042     textlines.push(new MyString(line));
00043   // Pop some lines from the stack:
00044   MyString* s;
00045   for(int i = 0; i < 10; i++) {
00046     if((s=(MyString*)textlines.pop())==0) break;
00047     cout << *s << endl;
00048     delete s; 
00049   }
00050   cout << "Letting the destructor do the rest:"
00051     << endl;
00052     system("pause");
00053 } 

Wygenerowano Tue Jun 27 19:37:05 2006 dla DL programowanie, zadanie 20 z rozdzialu 16 ksiazki Thinking in C++ programem  doxygen 1.4.6-NO