以下のプロトタイプを使用して、コールバック関数を介してデータを返す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の一部であり、質問には影響しません。