C++ QT QT使用重载类函数并发运行
我有一个用来将文件压缩成不同格式的类。我正在尝试使用QtConcurrent在后台运行压缩。我有两个功能:C++ QT QT使用重载类函数并发运行,c++,qt,overloading,C++,Qt,Overloading,我有一个用来将文件压缩成不同格式的类。我正在尝试使用QtConcurrent在后台运行压缩。我有两个功能: 将文件路径作为字符串和压缩格式 获取文件路径和压缩格式的向量 问题是,我不知道该使用哪个重载函数,所以我遇到了问题。我读了一篇文章,其中显示了使用static_cast显式声明要使用的方法。不过,由于我的函数是类函数,而不是静态方法,所以我一直在使用语法。考虑到这些都不是静态方法,我甚至可以使用静态方法吗 我如何称呼跑步: CompressFile compressor(&m_sy
CompressFile compressor(&m_sysLog);
QVector<QString> files;
CompressFormat format((CompressFormat)pMsgCast->get_format());
QtConcurrent::run(&compressor, &CompressFile::compress, files, format);
压缩文件压缩程序(&m_sysLog);
矢量文件;
压缩格式格式((压缩格式)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);
...
}
类压缩文件:公共QObject
{
Q_对象
公众:
...
bool compress(QString strFileName,CompressFormat格式);
bool compress(QVector strFileList,CompressFormat格式);
...
}
如果我删除了它编译的一个压缩函数,那么我知道我已经将问题缩小到了这一点
FileCompressor.cpp:100:74:注意:类型“T(Class::)(Param1、Param2、Param3、Param4、Param5)const”和“bool(CompressFile::)(QString、CompressFormat)”具有不兼容的cv限定符
FileCompressor.cpp:100:74:注意:无法从重载函数“&CompressFile::compress”解析地址
根据注释,您可以使用
静态\u cast
来消除各种重载之间的歧义
QtConcurrent::run(&compressor,
static_cast<bool(CompressFile::*)(QVector<QString>, CompressFormat)>(&CompressFile::compress),
files,
format);
QtConcurrent::运行(&compressor),
静态强制转换(&CompressFile::compress),
文件夹,
格式);
您应该能够使用静态\u cast
。试试QtConcurrent::run(&compressor,static_cast(&CompressFile::compress),files,format)
。效果不错!我的语法太离谱了,谢谢。如果你把它作为一个帖子,我会把它标记为答案。