mehrfachvererbung -> ambiguous inheritance



  • Hallo 🙂

    ich habe eine DLL, die sich in ein interface-teil und ein implementationsteil
    aufteilt. allerdings habe ich jetzt ein problem mit mehrdeutiger vererbung:

    ////// das interface
    
    struct Element
    {
        virtual void func1() = 0;
    };
    struct Moveable : virtual public Element
    {
        virtual void func2() = 0;
    };
    struct MoveableElement : virtual public Moveable
    {
    };
    
    ////// die implementation
    
    class CElement : virtual public Element
    {
    public:
        void func1()
        {
        }
    };
    class CMoveable : virtual public Moveable
    {
    public:
        void func2()
        {
        }
    };
    class CMoveableElement : virtual public MoveableElement, public CMoveable, public CElement
    {
    };
    

    das design ist vllt etwas fragwürdig, aber für das problem die beste lösung,
    zumal es funktoniert. jetzt sagt mir der compiler das func2 mehrdeutig
    vererbt wird.

    man kann das natürlich durch eine inline funktion lösen, aber gibt es da nix
    was z.b. durch änderung der zugriffsspezifier funktioniert?

    ich habe gehört, das der compiler immer die funktion mit dem höchsten zugriff
    nimmt.

    MfG multible



  • *push*

    gibt es den da nichts??


Anmelden zum Antworten