问题描述
的问题
问题是
\“创建至少四个指向Reader对象的指针的数组。使用New运算符至少创建四个指向派生类对象的指针,并将它们分配给该数组\”
读者是基础类。
fantasyReader,horrorReader,misteryReader和scienceReader是派生类。
我必须阅读Reader.txt
\“\“\“\“\“\“\“\“\“\“\“内容\”\”\”\”\”\”\”\”\”\”\”\”
大卫
0 <<-神秘类别
约翰
1 <恐怖类
标记
2 <科学分类
莎拉
3 <-fantasyReader
\“\“\“\“\“\“\“\“\“\“\“\“\“\“\“结束\”\”\”\”\”\”\”\”\”\ “ \” \“ \” \“ \” \“ \” \“ \”
我有的
enum {HORROR,MYSTERY,SICENCE,FANTASY};
int main(void)
{
Reader *obj[10];
ifstream reader_file;
int category =0;
string name;
string number;
int counter = 0;
if(reader_file.is_open())
{
while( getline(reader_file,name,\'\\n\') &&
getline(reader_file,number,\'\\n\'))
{
switch(category)
{
case FANTASY:
obj[counter++] = new fantasyReader(name);
break;
case MYSTERY:
obj[counter++] = new mysteryReader(name);
break
case HORROR:
obj[counter++] = new horrorReader(name);
break;
case SCIENCE:
obj[counter++] = new scienceReader(name);
break;
}
}
}
}
我不确定我的代码是否能回答上述问题。
解决方法
您的问题是您读取了字符串数据(字符),但枚举值对应于整数。尝试:
category = atoi (number.c_str());
switch(category) {
...
}
另外,不要忘记打开和关闭文件:
reader_file.open (\"readers.txt\",ifstream::in);
...
reader_file.close();