簡體   English   中英

QT QtConcurrent運行,帶有重載的類函數

[英]QT QtConcurrent run with overloaded class function

我有一個用於將文件壓縮為不同格式的類。 我正在嘗試使用QtConcurrent在后台運行壓縮。 有了這個我有兩個功能:

  1. 將文件路徑作為字符串和壓縮格式
  2. 取得文件路徑和壓縮格式的向量

問題是我遇到了QtConcurrent的問題,不知道要使用哪個重載函數。 我閱讀了該stackoverflow ,其中顯示了使用static_cast明確聲明要使用的方法。 由於我的函數是類函數而不是靜態方法,因此我對語法感到困惑。 考慮到這些不是靜態方法,我是否可以為此使用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);

...
}

如果刪除其中一個compress函數,它將進行編譯,因此我知道我的問題已縮小到此范圍。

FileCompressor.cpp:100:74:注意:類型'T(Class ::)(Param1,Param2,Param3,Param4,Param5)const'和'bool(CompressFile ::)(QString,CompressFormat)'具有不兼容的cv限定詞FileCompressor.cpp:100:74:注意:無法從重載函數'&CompressFile :: compress'解析地址

根據評論,您可以使用static_cast消除各種重載之間的歧義...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM