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.


Anmelden zum Antworten