2017-03-16 1 views
0

파일을 다른 형식으로 압축하는 데 사용하는 클래스가 있습니다. QtConcurrent를 사용하여 백그라운드에서 압축을 실행하려고합니다. 이것으로 나는이 두 가지 기능을 가지고 :QT 오버로드 된 클래스 함수로 QtConcurrent가 실행되었습니다.

  1. 문자열 및 압축 형식
  2. 로 파일 경로를 걸립니다 QtConcurrent와

문제 내가 갖는되는 문제를 파일 경로 벡터와 압축 형식을 취하지 어떤 오버로드 된 함수를 사용할 것인지를 아는 것. 나는 this stackoverflow을 읽어서 static_cast를 사용하여 명시 적으로 사용할 메소드를 명시했다. 내 함수는 클래스 함수가 ​​아니고 정적 메서드가 아니기 때문에 나는 구문을 고수하고있다. static 메소드가 아니라고 생각해서 static_cast를 사용할 수 있습니까? 내가 실행 전화 했어 어떻게

: 나는 압축 기능 중 하나를 제거하면 압축 클래스

CompressFile compressor(&m_sysLog); 
QVector<QString> files;  
CompressFormat format((CompressFormat)pMsgCast->get_format()); 
QtConcurrent::run(&compressor, &CompressFile::compress, files, format); 

헤더

class CompressFile : public QObject 
{ 
    Q_OBJECT 
public: 

... 

bool compress(QString strFileName, CompressFormat format);    
bool compress(QVector<QString> strFileList, CompressFormat format); 

... 
} 

그것은 내가 좁혀했습니다 알 수 있도록 컴파일 내 문제는 여기까지.

FileCompressor.cpp : 100 : 74 : 참고 : 유형 'T (클래스 :) (Param1을,과 Param2, 3 당겨, Param4, Param5) CONST'와 '부울 (CompressFile :) (QString, CompressFormat) '호환되지 않는 이력서 - 예선 FileCompressor.cpp가 : 100 : 74 :주의 : 오버로드 된 함수에서 주소를 확인할 수 없습니다'는 의견에 따라, 당신이 사이에 명확하게하기 위해 static_cast을 사용할 수 있습니다 & CompressFile : 압축 '

+1

당신은 *'static_cast'를 사용할 수 있어야합니다. QtConcurrent :: run (& compress, static_cast , CompressFormat)> (압축 파일 :: 압축), 파일, 형식)'을 시도하십시오. –

+0

그게 효과가! 제 문법은 너무나 감사합니다. 게시물을 작성하면 답변으로 표시됩니다. –

답변

1

다양한 과부하 ...

QtConcurrent::run(&compressor, 
        static_cast<bool(CompressFile::*)(QVector<QString>, CompressFormat)>(&CompressFile::compress), 
        files, 
        format); 
관련 문제