gpt4 book ai didi

c++ - QT QtConcurrent 以重载类函数运行

转载 作者:行者123 更新时间:2023-11-28 05:15:05 25 4
gpt4 key购买 nike

我有一个用于将文件压缩成不同格式的类。我正在尝试使用 QtConcurrent 在后台运行压缩。有了这个,我有两个功能:

  1. 将文件路径作为字符串和压缩格式
  2. 获取文件路径和压缩格式的 vector

问题是我遇到了 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);

压缩类 header

class CompressFile : public QObject
{
Q_OBJECT
public:

...

bool compress(QString strFileName, CompressFormat format);
bool compress(QVector<QString> strFileList, CompressFormat format);

...
}

如果我删除它编译的压缩函数之一,那么我知道我已经将我的问题缩小到这个。

FileCompressor.cpp:100:74: note: types ‘T (Class::)(Param1, Param2, Param3, Param4, Param5)const’ and ‘bool (CompressFile::)(QString, CompressFormat)’ have incompatible cv-qualifiers FileCompressor.cpp:100:74: note: could not resolve address from overloaded function ‘& CompressFile::compress’

最佳答案

根据评论,您可以使用 static_cast 来消除各种重载之间的歧义...

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

关于c++ - QT QtConcurrent 以重载类函数运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com