Hello again! following this little blurb are two things, my main.cpp which calls my class bag and my bag.h where bags and iterators for those bags are defined. When I construct a bag in main.cpp my program crashes and I can't figure out why. Any help would be appreciated!
main.cpp
bag.hCode://Program Name: main.cpp #include<iostream> #include<fstream> #include<string> #include<math.h> #include<time.h> using namespace std; #include "bag.h" void main() { string file1; ifstream fin; cout<<"Where is your list of chores?\n"; cin>>file1; fin.open(file1.c_str()); bag<string> chores; char item[256]; int x=0; while((cin.getline(item,256,'\n'))!=NULL) { chores.insert(item); } bag<string>::Iterator itr; cout<<"Here is your list of chores:\n"; for(itr=chores.begin();!(itr==chores.end());++itr) cout<<*itr; itr=chores.begin(); string chore; char task; while(!(chores.begin()==chores.end())) { srand(unsigned(time(NULL))); int x=(rand()%chores.size()); //random number 1-6 cout<<"Would you like to "<<*itr<<"? (y/n)\n"; cin>>task; if(task=='Y'||task=='y') { cout<<"When you're finished come back and hit enter."; cin.get(); cout<<"Good! You've finished your task!\n"; chore=*itr; chores.remove(chore); } else { cout<<"Okay, we'll do that later.\n"; } } cout<<"You're completed all of your chores, go have fun!\n"; }
Code://Programe Name: Bag.h template<class item> class BIter { public: BIter(){} BIter(item* p){} item& operator*() {return *ptr;} BIter& operator++(){ptr++; return *this; } bool operator==(const BIter& b) { return ptr==b.ptr; } private: item *ptr; }; template<class type>//allows more variability than typedef class bag { public: bag(int init_cap=30); bag(bag& b); //copy constructor void insert(type); void remove(type); void operator=(bag b); //Post: The bag has a deep copy of bag b int size(){return used;} ~bag();//destructor typedef BIter<type> Iterator; Iterator begin() { Iterator x=pBegin; return x; } Iterator end() { Iterator x=pEnd; return x; } private: int used;//a member to record the number of items in bag type *pData;//a pointer to point to the dynamic array int capacity;//a member to record the capacity of a bag type *pBegin; type *pEnd; }; template<class type> bag<type>::bag(int init_cap) { used=0;//an empty bag pData=new type[init_cap];//a dynamic array is created //and assigned to the pointer pData capacity=init_cap; *pBegin=pData[0]; *pEnd=pData[used]; } template<class type> void bag<type>::insert(type x) { if(used==capacity) return; pData[used]=x; used++; *pEnd=pData[used]; } template<class type> void bag<type>::remove(type t) { for(int i=0;i<used;i++) if(pData[i]==t) { pData[i]=pData[used-1]; used--; return; } } template<class type> void bag<type>::operator=(bag b) { if(capacity!=b.capacity) return; for(int i=0;i<b.used;i++) pData[i]=b.pData[i]; used=b.used; } template<class type> bag<type>::bag(bag& b) { capacity=b.capacity; pData=new type[capacity]; for(int i=0;i<b.used;i++) pData[i]=b.pData[i]; used=b.used; } template<class type> bag<type>::~bag() { delete [] pData; }



LinkBack URL
About LinkBacks



