创建指针数组和分配的问题

时间:2011-05-29 10:00:49

标签: c++

问题是

  

“创建一个由四个指向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;
            }
        }
    }
}

我不确定我的代码是否回答了上述问题。

1 个答案:

答案 0 :(得分:2)

您的问题是您读取字符串数据(字符),但枚举值对应于整数。尝试:

category = atoi (number.c_str());

switch(category) {
      ...
}

另外,不要忘记打开和关闭文件:

reader_file.open ("readers.txt", ifstream::in);
...
reader_file.close();