2012-07-28 3 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"); if (! file.open (QIODevice :: ReadOnly | QIODevice :: Text)) return; while (! file.atEnd()) { QByteArray line = file.readLine(); process_line (line); } – Laserbeak43

+1

@ Laserbeak43, 클래스의 객체가 만들어 질 때 파일을 열어 보시겠습니까, 아니면이 함수를 호출 할 때이 모든 일이 발생 했습니까? – chris

+0

파일을 언제든지 업데이트 할 수 있기 때문에 함수를 호출하면 문제가 발생합니다. 오후 8시 30 분 P.S. 죄송합니다. 응답이 생각한 방식대로 작동하지 않는 것 같습니다. – Laserbeak43