J
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.