Boost::Bind und std::for_each

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Boost::Bind und std::for_each

Beitrag von Bebu » Do Nov 10, 2011 1:15 pm

So jetzt konnte ich deinen Vorschlag testen. Der will ebenfalls nicht. Der Komiler meckert folgendermaßen:

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 instantiation of ‘boost::_bi::result_traits<boost::_bi::unspecified, void (Dedupe::Dataholding::Dataholding::*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>)>’:
/usr/include/boost/bind/bind_template.hpp:15:48:   instantiated from ‘boost::_bi::bind_t<boost::_bi::unspecified, void (Dedupe::Dataholding::Dataholding::*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), boost::_bi::list2<boost::arg<1>, boost::_bi::value<std::vector<Dedupe::FileInfo> > > >’
/home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:100:28:   instantiated from here
/usr/include/boost/bind/bind.hpp:69:37: error: ‘void (Dedupe::Dataholding::Dataholding::*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>)’ is not a class, struct, or union type
/home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:110:6: warning: unused parameter ‘Output’ [-Wunused-parameter]
In file included from /usr/include/c++/4.6/algorithm:63:0,
                 from /home/bernhard/Programmieren/dedupe/trunk/filesearch/searchfiles.h:12,
                 from /home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.h:11,
                 from /home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:9:
/usr/include/c++/4.6/bits/stl_algo.h: In function ‘_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<boost::_bi::unspecified, void (Dedupe::Dataholding::Dataholding::*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), boost::_bi::list2<boost::arg<1>, boost::_bi::value<std::vector<Dedupe::FileInfo> > > >]’:
/home/bernhard/Programmieren/dedupe/trunk/dataholding/dataholding.cpp:101:1:   instantiated from here
/usr/include/c++/4.6/bits/stl_algo.h:4379:2: error: no match for call to ‘(boost::_bi::bind_t<boost::_bi::unspecified, void (Dedupe::Dataholding::Dataholding::*)(std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>, std::vector<Dedupe::FileInfo>), boost::_bi::list2<boost::arg<1>, boost::_bi::value<std::vector<Dedupe::FileInfo> > > >) (std::map<std::basic_string<char>, Dedupe::Dataholding::Variant::Data*>&)’
make[3]: *** [dataholding/CMakeFiles/dedupe-dataholding.dir/dataholding.cpp.o] Fehler 1
make[2]: *** [dataholding/CMakeFiles/dedupe-dataholding.dir/all] Fehler 2
make[1]: *** [test/unittest/CMakeFiles/dedupe-unittest.dir/rule] Fehler 2
make: *** [dedupe-unittest] Fehler 2
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Boost::Bind und std::for_each

Beitrag von fat-lobyte » Do Nov 10, 2011 2:18 pm

Könntest du mir deine bisherige Arbeit vielleicht schicken?
Aus dem Trunk-Verzeichnis:

Code: Alles auswählen

svn diff > bebu-dataholding.patch
[edit]
Und welchen Typ ReturningTable hat würde mich interessieren...
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Boost::Bind und std::for_each

Beitrag von Bebu » Do Nov 10, 2011 6:42 pm

Kein Problem liegt seit heute Mittag im trunk-Verzeichnis. ReturningTable musst du im SqliteWrapper suchen, ist ein Dedupe::Dataholding::SqliteWrapper::Result, wenn mich nicht alles täuscht. Dataholding erbt von SqliteWrapper.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Boost::Bind und std::for_each

Beitrag von fat-lobyte » Do Nov 10, 2011 7:07 pm

Hrmpf...
Bebu hat geschrieben:über boost::bind mit dieser Funktion

Code: Alles auswählen

static void TranslateSqlTableToFileInfo( SqliteWrapper::Row Incoming,
                                          Dedupe::FileStream Output );
zusammenzustöpseln
und was seh ich im Code?
dedupe-r230 hat geschrieben:

Code: Alles auswählen

void TranslateSqlTableToFileInfo( SqliteWrapper::Row Incoming,
                                          Dedupe::FileStream Output );
Da fehlt ein "static". Is ja klar, dass die Signatur nicht passt, wenn die Signatur nicht passt ^^

Naja, jetzt gehts wenigstens. Und ich hab mir den Commit jetzt "geschnappt", wenns recht ist.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Boost::Bind und std::for_each

Beitrag von Bebu » Do Nov 10, 2011 7:53 pm

Kein Problem, mit dem Commit :) Ist ja kein Wettstreit. Wieso das static da nicht mehr steht, weis ich auch gerade nicht. Vielleicht habe ich es im Ausprobieren entfernt und dann vergessen wieder einzufügen :? Naja Hauptsache es geht jetzt und kann mit dem neuen Standard leicht ersetzt werden.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Antworten