Ошибка QFileInfo exists() и isFile()

Я пытаюсь проверить, существует ли указанный путь, и если это файл. Поэтому я написал этот фрагмент кода:

#include <qfile>
#include <qfileinfo>
bool Tool::checkPath(const QString &path){
 QFileInfo fileInfo(QFile(path));
 return (fileInfo.exists() && fileInfo.isFile());
}
</qfileinfo></qfile>

Я получаю следующие ошибки компилятора:

Error: request for member 'exists' in 'fileInfo', which is of non-class type 'QFileInfo(QFile)'

Error: request for member 'isFile' in 'fileInfo', which is of non-class type 'QFileInfo(QFile)'

Почему? Я читаю документы снова и снова, но я не могу это получить. BTW Qt Creator предлагает мне эти методы и завершает их. Но компилятор ему не нравится.

3 ответа

Кажется, неприятный синтаксический анализ: компилятор считает, что

QFileInfo fileInfo(QFile(path));

- это определение функции, подобное QFileInfo fileInfo(QFile path);

Используйте вместо этого что-то вроде:

QFile ff(file);
QFileInfo fileInfo(ff);
bool test = (fileInfo.exists() && fileInfo.isFile());


Из-за моей низкой репутации я не могу комментировать, затем здесь я помещаю несколько строк о QFileInfo:

QFileInfo fileInfo("./.py");
bool test = fileInfo.exists() && fileInfo.isFile();

этот пример не сработает!

Я добавил в check значение baseName():

bool test = fileInfo.exists() && fileInfo.isFile() && !fileInfo.baseName().isEmpty();


Вы можете напрямую использовать

QFileInfo fileInfo(path)
bool test = fileInfo.exists() && fileInfo.isFile()

licensed under cc by-sa 3.0 with attribution.