在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 : error LNK2019: unresolved external symbol
"public: __thiscall Reader::~Reader(void)" ([email protected]@[email protected])
referenced in function"public: void * __thiscall Reader::'scalar deleting destructor'(unsigned int)" ([email protected]@[email protected])
這是行不通的。我該怎麼寫或在哪裏寫delete
聲明?
除了特定的編譯器錯誤,我們能否看到讀者類的聲明? – 2011-05-30 22:51:18
@Will A:由於'cout <<','ifstream'和'string',它必須是C++文件。 – 2011-05-30 22:52:17
請發佈整個程序。無法知道錯誤是否是例如在Reader類中,因爲我們看不到源代碼。出於同樣的原因,還請引用編譯器給出的錯誤信息。 – 2011-05-30 22:53:11