Boost Bind and class scope
-
class foo{ private: ... public: foo(){ ... boost::bind(&foo::bar, this); } // <-- void bar(){...}; ... }
-
O_M_G_ frag mich nicht warum ich das this argument vergessen, hab, das hab ich bestimmt schon 10x mal gelesen (irgendwo anders)
vielen Dank!!
-
Nachdem das Problem ja behoben ist,
/usr/include/boost/mem_fn.hpp: In member function »const R& boost::_mfi::dm<R, T>::call(U&, const void*) const [with U = boost::barrier* const, R = void(boost::barrier*), T = foobar]«:
/usr/include/boost/mem_fn.hpp:352: instantiated from »const R& boost::_mfi::dm<R, T>::operator()(const U&) const [with U = boost::barrier*, R = void(boost::barrier*), T = foobar]«
/usr/include/boost/bind.hpp:222: instantiated from »R boost::_bi::list1<A1>::operator()(boost::_bi::type<R>, F&, A&, long int) [with R = void (&)(boost::barrier*), F = boost::_mfi::dm<void(boost::barrier*), foobar>, A = boost::_bi::list0, A1 = boost::_bi::valueboost::barrier*]«
/usr/include/boost/bind/bind_template.hpp:20: instantiated from »typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()() [with R = void (&)(boost::barrier*), F = boost::_mfi::dm<void(boost::barrier*), foobar>, L = boost::_bi::list1<boost::_bi::valueboost::barrier* >]«
/usr/include/boost/thread/detail/thread.hpp:56: instantiated from »void boost::detail::thread_data<F>::run() [with F = boost::_bi::bind_t<void (&)(boost::barrier*), boost::_mfi::dm<void(boost::barrier*), foobar>, boost::_bi::list1<boost::_bi::valueboost::barrier* > >]«
../main.cpp:64: instantiated from here
/usr/include/boost/mem_fn.hpp:333: Fehler: Zeiger auf Elementtyp »void (foobar::)(boost::barrier*)« mit Objekttyp »boost::barrier« inkompatibel
make: *** [main.o] Fehler 1OMG ist das geil
-
@DEvent: noch nie mit Templates programmiert? Oder was findest du an der Fehlermeldung jetzt so geil?
-
hustbaer schrieb:
@DEvent: noch nie mit Templates programmiert? Oder was findest du an der Fehlermeldung jetzt so geil?
Was ist jetzt eigentlich schlimmer, die Fehlermeldung an sich oder dass C++ Programmierer das als normal empfinden?
-
Was ist jetzt eigentlich schlimmer, die Fehlermeldung an sich oder dass C++ Programmierer das als normal empfinden?
Fehlermelduingen in C++ mit Templates sind ein Graus, ein Nachteil, den dieses mächtige Feature(das ich sonst noch nirgens gesehen) mit sich bringt. Deswegen gibts ja dann Concepts. Aber immerhin kriegt man die Zeile (normalerweise ;))
-
DEvent schrieb:
hustbaer schrieb:
@DEvent: noch nie mit Templates programmiert? Oder was findest du an der Fehlermeldung jetzt so geil?
Was ist jetzt eigentlich schlimmer, die Fehlermeldung an sich oder dass C++ Programmierer das als normal empfinden?
Die Fehlermeldungen sind so umfangreich weils eben ein komplexes Thema ist. Dafür kann man aber auch genau drin lesen was sache ist und was schief läuft. Die Fehlermeldungen sind also weder schlimm noch sonstwas. Damit ist aber offenbar hustbaers Frage auch beantwortet - du hast noch nicht so häufig mit Templates zu tun gehabt, sonst würdest du die Fehlermeldungen kenne, lesen können und als normal empfinden. Ist vermutlich so wie chinesische Schriftzeichen - wers kann empfindet sie als ganz normal
-
Ach das is bloss wieder DEvents typisches "C++ is böse" rumgespamme.
-
pumuckl schrieb:
Die Fehlermeldungen sind also weder schlimm noch sonstwas.
Zumindest da widerspreche ich entschieden. Immerhin ließ sich das Komitee dazu bewegen, ein äußerst umfangreiches, noch von niemandem hinreichend implementiertes und entsprechendem Widerstand begegnendes Sprachmittel wie Concepts einzuführen, das primär dazu gedacht ist, die Konsequenzen der äußerst lockeren Konzeption der Templates (die eher als turing-vollständiger Präprozessor mit überaus häßlicher Semantik denn als Äquivalent der Generics aus .NET und Java zu bezeichnen sind) in den Griff zu bekommen. Wesentliches Symptom dieser Konsequenzen sind eben derartige Fehlermeldungen.
Dabei will ich gar nichts gegen Templates gesagt haben. Ich finde sie äußerst praktisch, und ich kann auch mit den Fehlermeldungen umgehen. Aber auch hier hätte eine saubere Trennung zwischen einem Generics-Äquivalent mit entsprechenden Beschränkungen und einem frei programmierbaren Präprozessor auf semantischer Ebene nicht geschadet - TMP-Code wäre sehr viel lesbarer, und Concepts wären gar nicht erst notwendig geworden. (Natürlich ist das unfair, da der evolutionäre Zusammenhang von Templates und Generics eher umgekehrt ist. Aber die Welt hört ja nicht bei den imperativen Sprachen auf.)
-
audacia schrieb:
frei programmierbaren Präprozessor auf semantischer Ebene
Gibt's sowas in irgendeiner Sprache konkret (zum anschauen) oder magst du kurz anreißen, wie das aussehen könnte?
-
Badestrand schrieb:
audacia schrieb:
frei programmierbaren Präprozessor auf semantischer Ebene
Gibt's sowas in irgendeiner Sprache konkret
D hat mit Mixins und Constraints gute Ansätze.