1

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 函数,这就是我遇到段错误的地方。程序段错误就像它进入 while 循环一样。如果我删除虚拟读取功能,它不会出现段错误。gdb 只是指向 0x000000001 ??

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

4

1 回答 1

0

现在问题解决了!暂时我在声明中没有使用“虚拟”的那些函数。当我从 MyClass 派生子类时,我将“虚拟”放回原处,一切正常!

于 2012-06-03T23:09:35.427 回答