I copied this program from the book for understanding and it doesn't work
phone.h
phone.cppCode:class phone{ public: char first_name[15],last_name[15]; long number; phone *next; static int n; phone(const char *last,const char *first,long num); ~phone(); void print(); };
list.hCode:#include <iostream> #include "phone.h" #include <string> #include <process.h> #include <iomanip> using namespace std; int phone ::n; phone::phone(const char *last,const char *first,long num) { if(strlen(last)<15) strcpy(last_name,last); else { cout<<"Error! the last name is too long\n"; exit(1); } if(strlen(first)<15) strcpy(first_name,first); else { cout<<"Error!the first name is too long\n"; exit(1); } number=num; next=NULL; n++; } phone::~phone() { cout<<"destructing phone number"<<n<<'\n'; print(); n--; } void phone::print() { cout<<setw(15)<<last_name<<setw(15)<<first_name<<setw(15)<<number<<'\n'; }
list.cppCode:#include "phone.h" class list { phone *head; public: list(const char *last,const char *first,long num); ~list(); void insert(phone *p); phone *find_place(const char *last); phone *find(const char *last); phone *find_last_place(); int del(const char *last); void print(); };
linkedlist.cppCode:#include <iostream> #include <string> #include "phone.h" #include "list.h" using namespace std; list::list(const char *last,const char *first,long num) { head=new phone(last,first,num); } phone *list::find_last_place() { phone *tmp,*prev; for(tmp=head,prev=head;tmp->next;prev=tmp,tmp=tmp->next); return(prev); } phone *list::find(const char *last) { phone *tmp,*prev; for(tmp=head,prev=head;tmp!=NULL;prev=tmp,tmp->next) if(strcmp(last,tmp->last_name)==0) return(prev); return(prev); } phone *list::find_place(const char *last) { phone *tmp,*prev; for(tmp=head,prev=head;tmp!=NULL;prev=tmp,tmp=tmp->next) if(strcmp(tmp->last_name,last)>=0) return(prev); return(prev); } void list::insert(phone *p) { phone *tmp; //p->last_name the smallest if(strcmp(p->last_name,head->last_name)<0) { tmp=head; head=p; p->next=tmp; return; } //other cases tmp=find_place(p->last_name); p->next=tmp->next; tmp->next=p; } void list::print() { phone *tmp; for(tmp=head;tmp!=NULL;tmp=tmp->next) tmp->print(); cout<<"Total number od Objects are"<<head->n<<'\n'; } int list::del(const char *last) { phone *place,*tmp; //if the first object id being deleted if(!strcmp(last,head->last_name)) { tmp=head; head=head->next; delete tmp; return(1); } place=find(last); tmp=place ->next; if(tmp==NULL||strcmp(tmp->last_name,last)!=0) return(0); else { place->next=place->next->next; delete tmp; return(1); } } list::~list() { phone *tmp,*tmpn; for(tmp=head,tmpn=head->next;tmpn!=NULL;tmp=tmpn,tmpn=tmpn->next) delete tmp; delete tmp; };
and visual studio writes me:Code:// linked list.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include "phone.h" #include "list.h" using namespace std; int main() { char last[15],first[15]; long num; list *ll=new list("Lenon","Jenon",456641); phone *ph1=new phone("Haim","Moshe",345765),*ph2=new phone("Rabin","itzhak",467323),*phone_ptr; ll->insert(ph1); ll->insert(ph2); ll->print(); ll->del("Haim"); cout<<"AFTER DELETING\N"; ll->print(); cout<<"input last name first name phone number\n"; do { cin>>last>>first>>num; phone_ptr=new phone(last,first,num); ll->insert(phone_ptr); } while(num); ll->print(); delete ll; cin.get(); return 0; }
1>------ Build started: Project: LinkedList, Configuration: Debug Win32 ------
1> phone.cpp
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(1): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(2): warning C4627: '#include "phone.h"': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(3): warning C4627: '#include <string>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(4): warning C4627: '#include <process.h>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(5): warning C4627: '#include <iomanip>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.cpp(38): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
1> list.cpp
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\list.cpp(1): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\list.cpp(2): warning C4627: '#include <string>': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\list.cpp(3): warning C4627: '#include "phone.h"': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\list.cpp(4): warning C4627: '#include "list.h"': skipped when looking for precompiled header use
1> Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\list.cpp(86): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
1> LinkedList.cpp
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.h(1): error C2011: 'phone' : 'class' type redefinition
1> c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.h(1) : see declaration of 'phone'
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\linkedlist.cpp(14): error C2027: use of undefined type 'phone'
1> c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\phone.h(1) : see declaration of 'phone'
1>c:\users\alex\documents\visual studio 2010\projects\linkedlist\linkedlist\linkedlist.cpp(14): fatal error C1903: unable to recover from previous error(s); stopping compilation
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I think this book is too old and i will change the book to this:
http://newdata.box.sk/bx/c/#heading1


Reply With Quote
Bookmarks