gpt4 book ai didi

c++ - 成员函数指针 - 如何做到这一点?

转载 作者:行者123 更新时间:2023-11-28 03:08:14 24 4
gpt4 key购买 nike

我有以下内容:

    class NetRequest: public QObject {
Q_OBJECT
public:

NetRequest(QString postData, void(BrowserApp::*f)(QByteArray));
QString postData;
void (BrowserApp::*fn)(QByteArray);
public slots:
void requestFinished(QNetworkReply *r);
}

cpp 是:

        NetRequest::NetRequest(QString postData, void(BrowserApp::*f)(QByteArray)) {
this->postData = postData;
this->fn = f;
}

void NetRequest::requestFinished(QNetworkReply *r) {
QByteArray data;
fn(data);<--- this doesn't work
}

我试图在 requestFinished 中调用函数“fn”,但编译器不允许我 - 我做错了什么?

谢谢大家的帮助!

最佳答案

当你有一个指向成员函数的指针时,为了通过它调用你还必须有一个指向你用于调用的对象的指针。

但是你的代码:

fn(data);

没有这样的对象指针。您可能假设对象与成员函数指针相关联——但事实并非如此。

试试这个:

(that->*fn)(data);

that 是指向 BrowserApp 对象的指针。它将需要传递给 requestFinished 函数,或者以某种方式存储在 NetRequest 对象中——可能与 fn已设置。

关于c++ - 成员函数指针 - 如何做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19140668/

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