[英]QT QtConcurrent run with overloaded class function
我有一個用於將文件壓縮為不同格式的類。 我正在嘗試使用QtConcurrent在后台運行壓縮。 有了這個我有兩個功能:
問題是我遇到了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.