2012-07-28 77 views
0

我有一个类: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(); 
} 
+0

感谢您的答复,我” m试图做的是实际上从文件中读取文本: 以下示例逐行读取文本文件: QFile文件(“in.txt”);如果(!file.open(QIODevice :: ReadOnly | QIODevice :: Text)) return; (!file.atEnd()){ QByteArray line = file.readLine(); process_line(line); process_line(line); } – Laserbeak43 2012-07-28 04:24:37

+1

@ Laserbeak43,你想让文件在你的类的对象被创建时打开,或者当你调用该函数时发生所有这些? – chris 2012-07-28 04:26:32

+0

当我调用函数时,我想让它发生,因为该文件可以随时更新。 P.S. 对不起,格式似乎没有工作,我认为的答复方式.. – Laserbeak43 2012-07-28 04:27:49

相关问题