Anfängerfrage zu boost::spirit: Methode als Aktor aufrufen
-
Hallo allerseits,
Ich mache gerade meine ersten Schritte mit boost::spirit und benötige Eure Hilfe:
Wenn ich eine freie Funktion folgendermaßen als Aktor einsetze, dann funktioniert das ohne Probleme:
void doSomething(const char* begin, const char* end) { foobar(); } // ... rule<> itemFile = *(item >> ch_p(';')) [ &doSomething ];Nun würde ich aber gerne eine Klassen-Methode als Aktor aufrufen, was einfach nicht funktionieren will. Was mache ich falsch?
-
Also deinen Fehler kann ich in dem Code nicht erkennen...

Aber ich mach das immer mit boost::bind:
struct foo { void bar(char* beg, char* end){std::cout << std::string(beg,end) << std::endl;} }; rule<> value = int_p >> *(',' >> int_p); rule<> x = value[boost::bind(&foo::bar,pointer_auf_foo_instanz,_1,_2)];Und evtl. solltest du dir auch die predefined Actors ansehen, da kann man auch recht viel mit machen:
http://boost.org/libs/spirit/doc/predefined_actors.htmlphlox
-
Hi,
ich hab zwar von boost::spirit keine Ahnung, aber u.U. hilft dir ja der Artikel von Tobias Gerg weiter.
Grüße
GPC
-
phlox81 schrieb:
Also deinen Fehler kann ich in dem Code nicht erkennen...

Argh. Sorry, hab extra den Beitrag nochmal editiert, damit ich den nicht funktionierenden Code reintun kann, und es dann erst recht vergessen.
Mittlerweile hat sich die Sache schon erledigt, das Problem lag doch woanders. Aber die Verwendung von boost::bind werde ich trotzdem beibehalten, das gefällt mir richtig gut.

GPC: Danke für den Tip, werde ich mir nächste Woche mal ansehen. Spirit ist aber zum Glück ja eh sehr gut dokumentiert, bin damit bis jetzt erstaunlich gut klargekommen.