QT Qt并发运行与重载类函数
QT QtConcurrent run with overloaded class function
我有一个类,用于将文件压缩成不同的格式。我正在尝试使用QtConcurrent 在后台运行压缩。有了这个,我有两个功能:
- 将文件路径作为字符串和压缩格式
- 采用文件路径和压缩格式的矢量
问题是我在QtCurrent不知道要使用哪个重载函数时遇到问题。我阅读了这个堆栈溢出,它显示了使用 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 (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);
相关文章:
- 有没有办法将重载的类函数绑定到函数对象?
- 模板化类如何解析在其类型之一上调用的重载非成员函数?
- 检查类是否具有可能重载的函数调用运算符
- 将重载构造函数传递给类之间的函数
- 普通函数重载模板函数但普通不重载模板类?
- 什么更有效率?在重载函数中或通过在基类函数中检查对象类型来实现
- 重载基类函数是不好的做法吗?
- 对静态重载(类)函数/方法的调用是不明确的
- QT Qt并发运行与重载类函数
- C++用参数重载友元类函数参数
- 使用 enable_if 重载类模板的成员函数
- C++无法重载类(和命名空间)中的函数
- 重载的子类函数,将子类的实例作为参数,如何使用
- C++子类中的基类函数重载
- c++ 如何从派生类调用派生类中重载的模板类函数
- 重载类成员函数
- 重载类函数运算符兼任二传手和吸气手
- C++继承:调用重载基类函数
- 基于重载构造函数的策略类模板参数的选择
- 重载类函数中的按位和 (&) 运算符和"*this"