У меня есть класс A, в котором есть член std::ifstream filestr. В одной из функций класса я проверяю, достиг ли поток eof.
class A
{
private:
std::ifstream filestr;
public:
int CalcA(unsigned int *top);
}
Затем в файле cpp у меня есть
int CalcA(unsigned int *top)
{
int error;
while(true)
{
(this->filestr).read(buffer, bufLength);
if((this->filestr).eof);
{
error = 1;
break;
}
}
return error;
}
Я получаю ошибку компиляции
error: argument of type ‘bool (std::basic_ios<char>::)()const’ does not match ‘bool’
Может ли кто-нибудь сказать мне, как правильно использовать eof? Или какие-либо другие причины, по которым я получаю эту ошибку?
eof()
полезно только для определения причины сбоя операции чтения. Довольно бесполезно использовать его в качестве условия управления циклом. - person Dietmar Kühl   schedule 03.09.2012this->
не нужен в двух местах, где он появляется; это означает, что вы также можете удалить скобки. Во-вторых, как уже упоминалось,eof
— это функция; Вы должны позвонить ему. Но это не говорит вам, что вы достигли конца файла; это говорит вам, что вы пытались прочитать за конец файла. - person Pete Becker   schedule 03.09.2012