gpt4 book ai didi

c++ - 我如何从 C++ 中的静态线程入口点函数调用其他函数?

转载 作者:行者123 更新时间:2023-11-27 23:00:04 28 4
gpt4 key购买 nike

我的代码中有一个线程和一个入口点函数,如下所示:

    static void *readerThreadEntryPoint(void *arg)

void *MainWindow::readerThreadEntryPoint(void *arg) {
MODES_NOTUSED(arg);
}

我想用这段代码调用一个函数

    QBytearray data = socket->ReadAll();

我该怎么办?我有一个错误:在静态成员函数 QTcpSocket *socket 中无效使用成员“MainWindow::socket”;我有 2 个线程,一个用于读取缓冲区,另一个用于处理数据!

最佳答案

在线程创建期间,您应该将指向类实例的指针作为 arg 传递。这样,您可以在静态方法中执行此操作,而不是将 arg 标记为“未使用”:

void *MainWindow::readerThreadEntryPoint(void *arg) {
MainWindow* self = static_cast<MainWindow*>(arg);

从那时起,您可以使用 self,类似于您在非静态方法中使用的隐式 this。或者您可以简单地调用另一个非静态但执行实际工作的方法,如下所示:

self->readerThreadEntryPointImpl(); // non-static method call

关于c++ - 我如何从 C++ 中的静态线程入口点函数调用其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644565/

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