void* にキャストしようとしている次の tr1::function プロトタイプがあります。
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 種類の関数ポインターですが、それらをすべて同じベクトルに保存したいと考えています。