В функции main
string reader_txt = "Readers.txt";
string book_txt = "Books.txt";
Reader * obj[10];
// *********** Reading Reader.txt
ifstream reader_input;
reader_input.open(reader_txt.c_str()); // open file
string reader_name;
string reader_category;
int reader_n_category;
int counter=0;
if(reader_input.is_open())
{
while( getline(reader_input, reader_name, '\n') && getline(reader_input, reader_category, '\n'))
{
reader_n_category = atoi(reader_category.c_str());
switch(reader_n_category)
{
case FANTASY:
obj[counter++] = new fantasyReader(reader_name);
break;
case MYSTERY:
obj[counter++] = new mysteryReader(reader_name);
break;
case HORROR:
obj[counter++] = new horrorReader(reader_name);
break;
case SCIENCE:
obj[counter++] = new scienceReader(reader_name);
break;
}
}
}
else
cout<<"Cannot open up the Readers.txt"<<endl;
reader_input.close(); // close file
reader
является базовым классом
fantasyReader
, horrorReader
, mysteryReader
, scienceReader
являются производными классами.
В конце main
я поставил:
for(int pos=0; pos < counter; pos++)
{
delete obj[pos]; // compiling error, I don't know why
}
Я получаю ошибку компиляции:
main.obj: ошибка LNK2019: неразрешенный внешний символ "public: __thiscall Reader::~Reader(void)" (??1Reader@@QAE@XZ)
ссылкав функции "public: void * __thiscall Reader::'scalar deleting destructor'(unsigned int)" (??_GReader@@QAEPAXI@Z)
Это не сработает.Как или где я должен написать заявление delete
?