Problem mit Loki/MultiMethods.h
-
Ich versuche gerade die MultiMethoden von der Loki-Lib zuverstehen, doch nun scheitere ich an ganz einfachen Sachen:
#include <iostream> #include <Loki/MultiMethods.h> class Base { }; class Derived1 : public Base { }; class Derived2 : public Base { }; class Derived3 : public Base { }; void d2d3(Derived2&, Derived3&) { std::cout << "Hallo Derived2 und Derived3!" << std::endl; } void basic(Base&, Base&) { std::cout << "Hallo!" << std::endl; } int main() { Base b; Derived1 d1; Derived2 d2; Derived3 d3; Loki::BasicDispatcher<Base> d; d.Add<Base&, Base&>(basic); d.Add<Derived2&, Derived3&>(d2d3); // hier d.Go(d2, d3); }Ich bekomme folgenden Fehler:
main1.cpp:38: error: invalid conversion from `void (*)(Derived2&, Derived3&)' to `void (*)(Base&, Base&)' main1.cpp:38: error: initializing argument 1 of `void Loki::BasicDispatcher<BaseLhs, BaseRhs, ResultType, CallbackType>::Add(CallbackType) [with SomeLhs = Derived2&, SomeRhs = Derived3&, BaseLhs = Base, BaseRhs = Base, ResultType = void, CallbackType = void (*)(Base&, Base&)]'Was mich sehr ägert ist, dass über die Multimethoden gar nichts in der Doku steht: http://loki-lib.sourceforge.net/html/classes.html
Woran liegt's?
mfg.