Perhaps someone can help me here. I have been looking over this code and I cannot figure why it is giving me an error(s). If someone can give me an alternative way I would greatly appreciate it.
The program is not entirely finished. The program is basically about classes which reads and writes into a datafile (pa8.dat).
Code:
#include <string>
#include <vector>
#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>
#include <stdlib.h>
/**********************************base class REObject*******************/
class REObject
{
public:
int block; //location var
int lot; //location var
float price; //price var
int sq_footage; //duh
virtual void Print(); //overridden in subclasses
virtual void Write(); //overridden in subclasses
private:
};
//member methods - to be overridden!
void REObject::Print() {cout<<"print REObject"<<endl;}
void REObject::Write() {cout<<"write REObject"<<endl;}
/**************** ONE FAMILYderived from REObject ***********************/
class OneFamily : public REObject
{
public:
void Print(); //overridden
void Write(); //overridden
private:
int bathrooms;
int baths;
int year_built;
};
//member methods
void OneFamily::Print() {cout<<"print OneFamily"<<endl;}
void OneFamily::Write() {cout<<"write OneFamily"<<endl;}
/**************** COMMERCIAL derived from REObject *************************/
class Commercial : public REObject
{
public:
void Print(); //overridden
void Write(); //overridden
private:
char type_of_commerce;
bool sub_dividable;
};
//member methods
void Commercial::Print() {cout<<"print Commercial"<<endl;}
void Commercial::Write() {cout<<"write Commercial"<<endl;}
/***************** MULTIPLE DWEELING derived from REObject *******************/
class MultipleDwelling : public REObject
{
public:
void Print(); //overridden
void Write(); //overridden
private:
int num_of_units;
};
//member methods
void MultipleDwelling::Print() {cout<<"print MultipleDwelling"<<endl;}
void MultipleDwelling::Write() {cout<<"write MultipleDwelling"<<endl;}
/******************** REDBASE ************************/
class REDbase
{
public:
REDbase(char *file); //constructor: get filename from th CLI, opens the file,
//builds the dbase in an array of pointers...
~REDbase(); //destructor: writes the dbase back to file...
void Add();
void Print();
void Save();
private:
//vector<REObject*> dbase; //an array of REObject pointers (our database)
REObject* dbase[100]; //array of pointers to REobjects
char DataFile[50]; //data file name
};
REDbase::REDbase(char *file)
{
ifstream ifdatafile;
ifdatafile.open(file);
if(!ifdatafile)
{
cout<<"Couldn't open dictionary. Exiting..."<<endl;
exit(1);
}
string word;
while(ifdatafile>>word)
{
//parse the datafile
if(!strcmp(word.c_str(),"s"))
{
cout<<endl;
cout<<"single dwelling: ";
new OneFamily;
}
else if(!strcmp(word.c_str(),"m"))
{
cout<<endl;
cout<<"multi dwelling :";
new MultipleDwelling;
}
else if(!strcmp(word.c_str(), "c"))
{
cout<<endl;
cout<<"commercial :";
new Commercial;
}
else { cout<<" "<<word<<" "; }
}
cout<<endl;
}
/*******************************MAIN************************************************/
int main(int argc, char ** argv)
{
/* main calls class REObject member function constructor to open data file, parse the data
and populate the database, filename is static! */
new REDbase("pa8.dat");
/* main the enters a UI loop, giving the option to add a listing, print all listings
to the console, or saving the dbase to a file and then quitting the program.
main determines the input and then calls member functions of REDbase accordingly */
return (0);
}
The Error Message
Code:
--------------------Configuration: pa8 - Win32 Debug--------------------
Compiling...
pa8.cpp
c:\documents and settings\val\desktop\c++\pa8.cpp(102) : error C2065: 'string' : undeclared identifier
c:\documents and settings\val\desktop\c++\pa8.cpp(102) : error C2146: syntax error : missing ';' before identifier 'word'
c:\documents and settings\val\desktop\c++\pa8.cpp(102) : error C2065: 'word' : undeclared identifier
c:\documents and settings\val\desktop\c++\pa8.cpp(107) : error C2228: left of '.c_str' must have class/struct/union type
c:\documents and settings\val\desktop\c++\pa8.cpp(113) : error C2228: left of '.c_str' must have class/struct/union type
c:\documents and settings\val\desktop\c++\pa8.cpp(119) : error C2228: left of '.c_str' must have class/struct/union type
Error executing cl.exe.
pa8.obj - 6 error(s), 0 warning(s)
P.S I am using Visual C++ as the compiler.
Thanks.