%% module #include "dk4conf.h" #if DK4_HAVE_STDLIB_H #include #endif #if DK4_HAVE_UNISTD_H #include #endif #if DK4_TIME_WITH_SYS_TIME #include #include #else #if DK4_HAVE_TIME_H #include #else #if DK4_HAVE_SYS_TIME_H #include #endif #endif #endif #include "Dk4Comparable.h" #include "Dk4Container.h" class RandomNumber: public DkTools4::Comparable { private: int i; public: RandomNumber(void); ~RandomNumber(); int getNumber() const; int compareAgainst(void const *data, int cr) const; }; RandomNumber::RandomNumber(void) { i = rand(); } RandomNumber::~RandomNumber() { fputs("Destructor for RandomNumber\n", stdout); } int RandomNumber::getNumber() const { return i; } int RandomNumber::compareAgainst(void const *data, int cr) const { int back = 0; int j; RandomNumber *pr = (RandomNumber *)data; j = pr->getNumber(); if(i > j) { back = 1; } else { if(i < j) { back = -1; } } return back; } int main(int argc, char *argv[]) { int i; time_t timer; RandomNumber *rndn; time(&timer); srand(timer); try { DkTools4::Container container(0, true); for(i = 0; i < 100; i++) { RandomNumber *rndn = new RandomNumber(); if(!container.add(rndn)) { delete rndn ; } } container.reset(); i = 0; while(NULL != (rndn = container.next())) { printf("%04d: %d\n", ++i, rndn->getNumber()); #if 0 if (50 == i) { throw(std::bad_alloc()); } #endif } } catch(...) { printf("Poese Exception beim Container\n"); } return 0; }