我有以下 tr1::function 原型,我试图将其转换为 void*:
typedef std::tr1::function<cv::Mat (const cv::Mat,const void*)> preprocessingFunc;
在这个函数中,我将它存储在一个向量中,该向量包含表示函数类型和函数指针的结构:
void ImageGraph::addNode(preprocessingFunc func)
{
NodeFunction nodeFunction = { typeid(func), (void*)func };
//nodes.push_back(nodeFunction);
}
我得到的错误:
ImagePipeline.cpp:在成员函数“void IP::ImageGraph::addNode(IP::preprocessingFunc)”中:ImagePipeline.cpp:32:错误:从类型“IP::preprocessingFunc”到类型“void*”/usr 的无效转换/include/c++/4.2.1/typeinfo:135: 错误:'std::type_info::type_info(const std::type_info&)' 是私有的 ImagePipeline.cpp:32: 错误:在此上下文中
是否可以将此函数类型转换为指针(void *)?如果没有,有没有更好的方法来实现我正在做的事情?
为了清楚起见,我存储了函数指针以供以后调用,它们目前是 3 种类型的函数指针,但是我想将它们全部存储在同一个向量中。