Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ pthread_创建错误:_C++_Linux_Qt_Qtembedded - Fatal编程技术网

C++ pthread_创建错误:

C++ pthread_创建错误:,c++,linux,qt,qtembedded,C++,Linux,Qt,Qtembedded,我写这段代码是为了我自己的目的。它将创建一个线程,该线程运行名为event_handler()的例程。例程event_handler将类对象QApplication的一个实例作为参数,并调用其exec()方法 我的代码有什么问题。(请记住,我是这方面的新手,这可能是一个非常愚蠢的错误:-)线程函数必须使用void指针作为参数,而不是对象的引用。您可以稍后将其类型转换为正确的指针类型: void event_handler(void* pointer) { QApplication* ap

我写这段代码是为了我自己的目的。它将创建一个线程,该线程运行名为event_handler()的例程。例程event_handler将类对象QApplication的一个实例作为参数,并调用其exec()方法


我的代码有什么问题。(请记住,我是这方面的新手,这可能是一个非常愚蠢的错误:-)

线程函数必须使用
void
指针作为参数,而不是对象的引用。您可以稍后将其类型转换为正确的指针类型:

void event_handler(void* pointer)
{
    QApplication* app = reinterpret_cast<QApplication*>(pointer);

    app->exec();
}

线程函数必须将
void
指针作为其参数,而不是对象的引用。您可以稍后将其类型转换为正确的指针类型:

void event_handler(void* pointer)
{
    QApplication* app = reinterpret_cast<QApplication*>(pointer);

    app->exec();
}

Qt有自己的线程函数(查找
QThread
)。您最好将
void*
指针传递给
event\u处理程序
,并在其中执行指针强制转换。Qt有自己的线程函数(查找
QThread
)。您最好将
void*
指针传递给
event\u处理程序
,并在其中执行指针转换。
void event_handler(void* pointer)
{
    QApplication* app = reinterpret_cast<QApplication*>(pointer);

    app->exec();
}
int main()
{
    QApplication app;
    std::thread app_thread([&app]() { app.exec(); });

    // Other code

    app_thread.join();
}