我复制/粘贴这个控制台应用程序,它是一个银行记录保存系统,我得到了一个错误的"gt"没有操作数的运算符;if (infile.read(reinterpret_cast<char*>(this), sizeof(*this)) > 0)
这与类型有关吗?我在某个地方读到了关于int
需要过载之类的东西。无论如何,idk。
以下是部分代码:
void account_query::read_rec()
{
ifstream infile;
infile.open("record.bank", ios::binary);
if (!infile)
{
cout << "Error in Opening! File Not Found!!" << endl;
return;
}
cout << "n****Data from file****" << endl;
while (!infile.eof())
{
if (infile.read(reinterpret_cast<char*>(this), sizeof(*this)) > 0)
{
show_data();
}
}
infile.close();
ifstream::read()
不返回读取的字符数。它返回对自身的引用。
另外,不要使用while (!infile.eof())
:为什么循环条件(即while (!stream.eof())
(中的iostream::eof()
被认为是错误的?
相反,在读取ifstream
后,测试它是否处于良好状态
if(infile) { ... }
由于infile.read(...)
返回对infile
的引用,这可能是一个修复方法:
cout << "n****Data from file****" << endl;
while (infile.read(reinterpret_cast<char*>(this), sizeof(*this)))
show_data();
}