Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
QtConcurrent Error: Array Initialization Requires a brace-enclosed Initializer list
我试图在类成员函数运行时为它创建一个进度条,但是当我将字符串数组和布尔数组传递到 QTConcurren::run 函数时,我收到此错误:
错误 C2075 'QtConcurrent::VoidStorageMemberFunctionPointerCall4::arg1':数组初始化需要大括号括起来的初始值设定项列表。
我的类称为 CreateInputFiles,该类的对象称为 inpFileObj。
我尝试在数组名称前面添加 &,但我又遇到了另一个错误。
主.cpp
#include <iostream>
#include <iterator>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <atlstr.h>
#include <windows.h>
#include <QtWidgets/QApplication>
#include "UserInputClass.h"
int main(int argc, char*argv[]) {
QApplication app(argc, argv);
UserInputClass u;
u.show();
return app.exec();
}
CreateInputFiles.h
#include <iostream>
#include <string>
#include <cstring>
#include <map>
#include <vector>
#include <iterator>
#include <Windows.h>
#include <filesystem>
#include <fstream>
#include <sstream>
#include <boost/range/combine.hpp>
#include<set>
class CreateInputFiles
{
CreateInputFiles();
~CreateInputFiles();
public:
void createInputFileFn(string arguments[],int numInpFiles, bool args[],int numFlags) {
for( int count = 0; count < 5; count++ ) {
sleep( 1 );
std::cout << "Ping!" << std::endl;
}
}
};
UserInputClass.h
#include <QDialog>
#include <QMouseEvent>
#include "ui_UserInputClass.h"
#include "CreateInputFiles.h"
#include <QDir>
#include <QFileDialog>
#include <QWindow>
#include <iostream>
#include <list>
#include <iterator>
#include <string>
#include <QtConcurrent>
#include <QFutureWatcher>
using namespace std;
class Form : public QDialog
{
Q_OBJECT
public slots:
void on_pushButton_clicked();
public:
UserInputClass(QWidget *parent = Q_NULLPTR);
~UserInputClass();
private:
CreateInputFiles inpFileObj;
};
用户输入类.cpp
#include <iostream>
#include "UserInputClass.h"
#include <iterator>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <atlstr.h>
#include <windows.h>
Form::Form(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
void UserInputClass::on_pushButton_clicked() {
string inpArguments[3];
inpArguments[0]= oP;
inpArguments[1]=j17file;
inpArguments[2]=j19file;
int arrStrLength = (sizeof(inpArguments) / sizeof(*inpArguments));
bool flagArgs[2];
flagArgs[0]=true;
flagArgs[1]=true;
int arrLength = (sizeof(flagArgs) / sizeof(*flagArgs));
//this line below is causing the error
QFuture<void> future = QtConcurrent::run(&inpFileObj,&CreateInputFiles::createInputFileFn,inpArguments, arrStrLength,flagArgs, arrLength);
this->FutureWatcher.setFuture(future);
}
UserInputClass.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QDialog" name="UserInputClass">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
错误 C2075 'QtConcurrent::VoidStorageMemberFunctionPointerCall4::arg1':数组初始化需要大括号括起来的初始值设定项列表
刚刚找到解决方案!切勿在QtConcurrent::run中使用C样式数组。改用C++ std::array!
相关文章:
- 将大括号括起来的初始值设定项列表作为结构返回
- 调用重载的"<大括号括起来的初始值设定项列表>"对于对来说就足够了是模棱两可的
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 大括号括起来的初始值设定项列表中的短 c++ 类构造函数
- 嵌套的大括号括起来的初始值设定项列表
- 不能在构造函数 - C++中使用大括号括起来的列表
- C++委托构造函数中用大括号括起来的初始值设定项列表
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 无法从大括号括起来的初始值设定项列表转换
- 从大括号括起来的列表进行数组初始化C++很奇怪
- 为什么大括号括起来的初始值设定项列表不适用于 std::array
- 无法从"<大括号括起来的初始值设定项列表>转换为
- 从类型为"<大括号括起来的初始值设定项列表>"的类型非常量引用的无效初始化
- 生成加起来为1的随机数字列表
- 无法从<大括号括起来的初始值设定项列表转换>
- 从大括号括起来的初始值设定项列表进行的Lvalue引用初始化无法编译
- 类大括号括起来的初始值设定项列表失败
- 正确的线程调用语法?错误:没有匹配对 std::thread::thread(<大括号括起来的初始值设定项列表>)
- 无法从大括号括起来的初始值设定项列表转换为 std::vector
- 'xxxx' :看起来像一个函数定义,但没有参数列表;跳过表观身体