Я занимаюсь этим часами. Я ОЧЕНЬ новичок в C++ и не понимаю решений, которые я нашел до сих пор.Visual C++ Forms Application Error: C3374
Я пытаюсь сделать завиток загрузчик файлов в моем виде приложения, но я получаю эту ошибку проклятую:
Error 50 error C3374: can't take address of 'EmperorAntiVirusInstaller::FileDownloader::write_data' unless creating delegate instance c:\users\bailey\documents\visual studio 2010\projects\emperor antivirus installer\emperor antivirus installer\FileDownloader.h 97
код, как показано ниже:
private:
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
System::Void beginDownload(void) {
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "http://localhost/aaa.txt";
char outfilename[FILENAME_MAX] = "C:\\bbb.txt";
curl = curl_easy_init();
if(curl) {
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &FileDownloader::write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
}
Кроме того, форма-х имя - FileDownloader.
erroring линия:
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &FileDownloader::write_data);
Я ищу, чтобы найти хорошо объяснил & простой ответ о том, как решить эту проблему. :/
Должно ли быть достаточно, чтобы метод 'write_data' был статическим членом? – harper
@harper: при нормальном C++, да, наверное. В C++/CLI я менее уверен. –