Added "5.14 Using C++ non-static functions for callbacks?"
This commit is contained in:
parent
82107a02f5
commit
22059858fe
21
docs/FAQ
21
docs/FAQ
@ -1,4 +1,4 @@
|
|||||||
Updated: Feb 18, 2008 (http://curl.haxx.se/docs/faq.html)
|
Updated: Sep 24, 2008 (http://curl.haxx.se/docs/faq.html)
|
||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
@ -85,6 +85,7 @@ FAQ
|
|||||||
5.11 How do I make libcurl not receive the whole HTTP response?
|
5.11 How do I make libcurl not receive the whole HTTP response?
|
||||||
5.12 Can I make libcurl fake or hide my real IP address?
|
5.12 Can I make libcurl fake or hide my real IP address?
|
||||||
5.13 How do I stop an ongoing transfer?
|
5.13 How do I stop an ongoing transfer?
|
||||||
|
5.14 Using C++ non-static functions for callbacks?
|
||||||
|
|
||||||
6. License Issues
|
6. License Issues
|
||||||
6.1 I have a GPL program, can I use the libcurl library?
|
6.1 I have a GPL program, can I use the libcurl library?
|
||||||
@ -1070,6 +1071,24 @@ FAQ
|
|||||||
If you're using the multi interface, you also stop a transfer by removing
|
If you're using the multi interface, you also stop a transfer by removing
|
||||||
the particular easy handle from the multi stack.
|
the particular easy handle from the multi stack.
|
||||||
|
|
||||||
|
5.14 Using C++ non-static functions for callbacks?
|
||||||
|
|
||||||
|
libcurl is a C library, it doesn't know anything about C++ member functions.
|
||||||
|
|
||||||
|
You can overcome this "limitation" with a relative ease using a static
|
||||||
|
member function that is passed a pointer to the class:
|
||||||
|
|
||||||
|
// f is the pointer to your object.
|
||||||
|
static YourClass::staticFunction(void *buffer, size_t sz, size_t n, void *f)
|
||||||
|
{
|
||||||
|
// Call non-static member function.
|
||||||
|
static_cast<YourClass*>(f)->nonStaticFunction();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is how you pass pointer to the static function:
|
||||||
|
curl_easy_setopt(hcurl, CURLOPT_WRITEFUNCTION, YourClass:staticFunction);
|
||||||
|
curl_easy_setopt(hcurl, CURLOPT_WRITEDATA, this);
|
||||||
|
|
||||||
6. License Issues
|
6. License Issues
|
||||||
|
|
||||||
Curl and libcurl are released under a MIT/X derivate license. The license is
|
Curl and libcurl are released under a MIT/X derivate license. The license is
|
||||||
|
Loading…
Reference in New Issue
Block a user