我想写一个函数,它会使用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