我想寫一個函數,它會使用libcurl來創建一個文件,然後存儲到一個容器中。我想用迭代器來抽象出容器的類型。該功能應該是這樣的:投射到一個未知類型
template <typename OutIt>
bool download_to_container(const std::string& link, OutIt out)
{
//set the write callback
//perform the action
//return whatever
}
寫回調簽名size_t(char*, size_t, size_t, void *userdata)
的函數,其中userdata
是指向我可以設置的libcurl將傳遞到我寫回調。
這個userdata
將是一個指向用戶已經傳遞到download_to_container
的輸出迭代器的指針。現在,一旦回調被調用,我必須將void*
轉換爲OutIt*
。如果我不知道迭代器的類型,我該如何做到這一點?這是我第一次遇到這個問題,所以請在我身上輕鬆一下。 :-)我正在使用Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)
。
正是我需要的。我真的不知道爲什麼我沒有想到這一點。我被這個奇怪的想法困住了,因爲我正在處理C API,所以回調函數不能作爲函數模板。呃,很奇怪。不管怎樣,謝謝! :) – Tuntuni