0
我有一個類用於將文件壓縮爲不同的格式。我試圖使用QtConcurrent在後臺運行壓縮。有了這個,我有兩個功能:QT Qt與重載的類函數一起運行
- 注意到文件路徑爲一個字符串,壓縮格式
- 注意到的文件路徑矢量和壓縮格式
問題是我得到的問題與QtConcurrent不知道使用哪個重載函數。我讀了this 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);
...
}
如果我刪除的壓縮功能之一是編譯,所以我知道我已經收窄我的問題歸結於此。
FileCompressor.cpp:100:74:注:類型 'T(類::)(參數1,參數2,參數3,Param4,Param5)常量' 和「布爾(CompressFile ::)(QString的,CompressFormat) 「有不兼容的CV-預選賽 FileCompressor.cpp:100:74:注意:不能從重載函數解析地址」 & CompressFile ::壓縮
你*應該*能夠使用'static_cast'。嘗試'QtConcurrent :: run(&compressor,static_cast,CompressFormat)>(&CompressFile :: compress),files,format)''。 –
工作正常!我的語法很好,謝謝。如果你做了這個帖子,我會將其標記爲答案。 –