Pergunta

eu tenho uma aula:

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

e no membro da classe eu tento usar:

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

e recebo um erro dizendo:"erro:C2064:o termo não é avaliado como uma função que recebe 1 argumento", mas os documentos dizem para usar:

QFile file("in.txt");

O que estou fazendo de errado?

obrigado

Foi útil?

Solução

A documentação que você trouxe é um construtor.É chamado quando o objeto é realmente criado, não mais tarde.Você está agindo como se o objeto fosse um functor, "chamando" o objeto depois de criado.

Para utilizar o construtor, você pode inicializar seu membro com o nome do arquivo:

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

Porém, por não ter usado o Qt, não sei se isso vai abri-lo ou não.Se abrir, use o seguinte:

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

Agora sua função só precisa abri-la, usá-la e fechá-la sempre:

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

    //read file and do whatever

    fileMBox.close(); 
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top