问题是
“创建一个由四个指向Reader对象的数组。使用New运算符创建四个指向派生类对象的指针并将它们分配给数组”
读者是基类。 fantasyReader,horrorReader,misteryReader和scienceReader都是派生类。
我必须阅读Reader.txt
“” “” “” “” “” “内容” “” “” “” “” “”“
大卫
0< -Mystery类别
约翰
1< -Horror类别
马克
2< -Science类别
萨拉
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;
}
}
}
}
我不确定我的代码是否回答了上述问题。
答案 0 :(得分:2)
您的问题是您读取字符串数据(字符),但枚举值对应于整数。尝试:
category = atoi (number.c_str());
switch(category) {
...
}
另外,不要忘记打开和关闭文件:
reader_file.open ("readers.txt", ifstream::in);
...
reader_file.close();