虚拟故障中的seg故障&函数返回语句

时间:2012-06-03 00:19:17

标签: segmentation-fault virtual istream

main()我有标题:iostream,fstream,iomanip,MyClass.h

char temp;
MyClass *class1;
ifstream inf("file")
while(inf >> temp)
{ 
    if(temp == 'A') class1 = new Myclass();
    inf >> *class1; 
}

在Myclass.h中:

class MyClass{
  int num;
protected:
  virtual istream& read(istream &is)
  { /* char temp; is >> temp >> num; */ 
    return is; //seg faults on this line I believe
  } 
public:
  friend istream& operator >> (istream &is, MyClass &class1) {return class1.read(is);}
};

程序应该读取一个文件,看它是否以'a'开头,然后创建一个类,并将信息解析为它。然后MyClass将istream传递给read函数,这就是我遇到seg错误的地方。编程seg故障就像它进入while循环一样。如果我删除虚拟读取功能,它不会出错。 gdb只指向??

中的0x000000001

这是一个家庭作业问题,我需要为read()(和其他)函数编写正文。

1 个答案:

答案 0 :(得分:0)

问题现在解决了!暂时我在声明中没有“虚拟”的情况下使用这些功能。当我从MyClass派生子类时,我把'虚拟'放回去,一切正常!