
Ein paar Dinge zur Klarheit:
Code: Alles auswählen
typedef Dedupe::Dataholding::Variant::Data * Value;
typedef std::map<std::string,Value> Row;
typedef std::vector<Row> Result;
Code: Alles auswählen
Dedupe::FileStream Dataholding::FileGetter()
{
Dedupe::FileStream ReturningStream;
std::for_each( ReturningTable.begin(), ReturningTable.end(), boost::bind( Dataholding::TranslateSqlTableToFileInfo, ReturningStream, _1 ) );
return ReturningStream;
}
über boost::bind mit dieser Funktion
Code: Alles auswählen
static void TranslateSqlTableToFileInfo( SqliteWrapper::Row Incoming,
Dedupe::FileStream Output );
Code: Alles auswählen
In file included from /usr/include/boost/bind.hpp:22:0,
from /home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.h:13,
from /home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:9:
/usr/include/boost/bind/bind.hpp: In member function ‘void boost::_bi::list2<A1, A2>::operator()(boost::_bi::type<void>, F&, A&, int) [with F = void (*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), A = boost::_bi::list1<std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>&>, A1 = boost::_bi::value<std::vector<Dedupe::FileInfo> >, A2 = boost::arg<1>]’:
/usr/include/boost/bind/bind_template.hpp:32:59: instantiated from ‘boost::_bi::bind_t<R, F, L>::result_type boost::_bi::bind_t<R, F, L>::operator()(A1&) [with A1 = std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, R = void, F = void (*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), L = boost::_bi::list2<boost::_bi::value<std::vector<Dedupe::FileInfo> >, boost::arg<1> >, boost::_bi::bind_t<R, F, L>::result_type = void]’
/usr/include/c++/4.6/bits/stl_algo.h:4379:2: instantiated from ‘_Funct std::for_each(_IIter, _IIter, _Funct) [with _IIter = __gnu_cxx::__normal_iterator<std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>*, std::vector<std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*> > >, _Funct = boost::_bi::bind_t<void, void (*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), boost::_bi::list2<boost::_bi::value<std::vector<Dedupe::FileInfo> >, boost::arg<1> > >]’
/home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:95:142: instantiated from here
/usr/include/boost/bind/bind.hpp:313:9: error: could not convert ‘(& a)->boost::_bi::list1<A1>::operator[] [with T = std::vector<Dedupe::FileInfo>, A1 = std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>&]((* &((boost::_bi::list2<boost::_bi::value<std::vector<Dedupe::FileInfo> >, boost::arg<1> >*)this)->boost::_bi::list2<boost::_bi::value<std::vector<Dedupe::FileInfo> >, boost::arg<1> >::<anonymous>.boost::_bi::storage2<boost::_bi::value<std::vector<Dedupe::FileInfo> >, boost::arg<1> >::<anonymous>.boost::_bi::storage1<boost::_bi::value<std::vector<Dedupe::FileInfo> > >::a1_))’ from ‘std::vector<Dedupe::FileInfo>’ to ‘std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>’

Danke