我有一个ifstream指针作为类成员的类,例如
class SomeClass {
...
ifstream* binary_file;
...
public:
...
void randomMethod();
...
}
在其中一种方法中,例如, randomMethod()我尝试通过执行binary_file->open(filename, ios::binary);
以二进制模式打开文件,但这导致了段错误。
然后我尝试创建一个临时的ifstream,然后将指针指向ifstream,如下所示:
ifstream temp (filename, ios::binary);
binary_file = &temp;
上面的代码没有导致段错误,我能够在这个方法中对文件进行一些处理。但是,尝试以不同的类方法访问它时,我开始出错。我认为这是由于在方法返回后分配给temp的内存被释放,因此我的指针指向任意内存位置。
如何初始化ifstream对象并将其附加到我的类以供以后访问? (我确实试图在deconstuctor中关闭这个文件,但显然没有什么可以关闭......)
谢谢!