std::thread::thread(<未解析的重载函数类型>) in Qt
std::thread::thread(<unresolved overloaded function type>) in Qt
我在这个网站上看到的其他答案似乎与我的问题无关。无论如何,在我的mainwindow.cpp文件中,我有一个需要访问ui命名空间的函数:
do
{
intrecv= recv(s1, buffer, 10000,0);
if(intrecv > 0)
{
recvData = buffer;
ui->textEdit->setText("Connection occurred.n");
}
}while(intrecv > 0);
下面是我的预处理器命令:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <thread>
#include <string>
#include <QString>
在mainwindow.h文件中,我将接收函数原型化如下:
class MainWindow : public QMainWindow
{
Q_OBJECT
void receiveFunction();
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void on_lineEdit_returnPressed();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
然后,在mainwindow.cpp中,我在另一个函数的线程中调用了接收函数:
void MainWindow::on_pushButton_clicked()
{
connectFunction();
std::thread t1(receiveFunction);
t1.detach();
}
一个例子,你可以尝试复制我的问题是做一个按钮和一个textit字段。让按钮插槽调用一个编辑texttedit字段的函数。
edit:我忘了提到:对于我的迷你示例,不只是让它编辑texttedit字段,让它接收数据并编辑texttedit字段。
错误消息似乎暗示reveiveFunction
函数有多个重载,但这可能会产生误导(如果上面的代码是正确的)。这一行有两处本质上是错误的:
std::thread t1(receiveFunction);
首先,不能在不提供类型限定的情况下获取成员函数的地址(并且成员函数不会衰变为指向成员函数的指针)。第二个问题是,非静态成员函数需要调用它的对象,而您没有提供该对象。该语句可以通过以下操作修复:
std::thread t1(&MainWindow::receiveFunction, this);
这将正确地接受成员函数的地址,并提供this
指针,函数将在该指针上求值。
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 将模板(没有规范)传递给 std::thread() 会出现错误:<未解析的重载函数类型>匹配错误
- 标准库中是否有与 std::thread 的构造函数语义匹配的类型擦除函数包装器?
- 如何使用包含 std::thread 的 std::vector 的结构类型正确初始化 std::vector
- boost::thread::thread(<未解析的重载函数类型>, int) - 模板化类成员函数
- 错误:类型' void* (Thread::)(void*) '的参数与' void* (*)(void*) '
- C++错误类型"std::thread"无法解析 Eclipse Mars 4.5 , Ubuntu 12.04
- C ++在我的类中condition_variable wait_for谓词,std::thread<未解析的重载函数类型>错误
- std::thread::thread(<未解析的重载函数类型>) in Qt
- 关于std::thread中的c++自动类型转换行为