QFile принимает более одного параметра?

У меня есть класс:

Class MyClass
{
    void myMember();
    ///code etc
    private:
        QFile fileMBox; 
}

и в члене класса я пытаюсь использовать:

void MyClass::myMember()
{
    fileMBox ("myFile.txt");
}

и я получаю сообщение об ошибке: "ошибка: C2064: термин не оценивает функцию, принимающую 1 аргумент", но документы говорят использовать:

QFile file("in.txt");

Что я делаю неправильно?

Спасибо

1 ответ

Решение

Документация, которую вы взяли, является конструктором. Он вызывается, когда объект действительно сделан, а не позже. Вы ведете себя так, как будто объект является функтором, "вызывающим" объект после его создания.

Чтобы использовать конструктор, вы можете инициализировать ваш член с именем файла:

MyClass::MyClass() : fileMBox ("myFile.txt") {}

Однако, не используя Qt, я не знаю, откроет ли это его или нет. Если он откроется, используйте ниже:

MyClass::MyClass() {
    fileMBox.setFileName ("myFile.txt");
}

Теперь вашей функции просто нужно ее открыть, использовать и закрывать каждый раз:

void MyClass::myMember() {
    if (!fileMBox.open (QIODevice::ReadOnly | QIODevice::Text))
        //handle error

    //read file and do whatever

    fileMBox.close(); 
}
Другие вопросы по тегам