我正在使用curl 库,它通过带有下面原型的回调函数向我返回数据
size_t write_data(void * data, size_t size, size_t nmemb, void * userpointer);
我注意到如果我在我的类中声明一个适合这个原型的函数
//file Dialog.h
class Dialog : public QDialog
{
private:
int new_data_callback(void * newdata, size_t size, size_t nmemb, QByteArray * buffer);
}
如果我尝试在我的Dialog.cpp中使用它
curl_easy_setopt(curl_handle,CURLOPT_WRITEFUNCTIION, new_data_callback);
我收到一个错误
Invaid use of member (did you forget the '&'?)
如果我添加static
到我的函数声明中,它会编译。
static int new_data_callback(void * newdata, size_t size, size_t nmemb, QByteArray * buffer); //ok
问题
为什么在这种情况下需要静态?
PS:以 Q 开头的类,例如 QDialog 是QT的一部分,不会影响问题。