Geschachtelte structs (Baumstruktur) in vererbung erweitern?



  • In einigen Fällen benutze ich gerne geschachtelte structs um eine art Baumstruktur zu machen.
    Dies hat leider den Nachteil das man nicht einfach eine der structs in der Vererbung Erweitern kann:

    struct Struct1
    {
        //<--Ganz viele complexe ander sachen hier
        struct
        {
            int a;
        } sub;
    };
    
    struct Struct2 : public Struct1
    {
        struct
        {
            int b;
        } sub;
    };
    
    ...
    
    Struct2 s;
    s.sub.a = 0; //geht nicht weil wir sub aus Struct1 "überschrieben" und nicht "erweitert" haben :(
    

    Gibs da eventuell ne möglichkeit? Momentan müsste ich beide Basisstrukturen ausschreiben, inklusive Initalisierung etc...



  • Zeiger verwenden. Und schaut nach dem Kompositum Pattern aus.



  • Das sub in struct2 überschreit das sub in struct1 nicht, sonderen verdeckt das nur. Du kannst einfach einen anderen Namen für sub verwenden. Das Design erscheint mir aber zu kompliziert, vielleicht läßt sich das, was Du willst, auch anders einfacher erreichen.
    z.B.:

    struct Foo{
     //<--Ganz viele komplexe andere Sachen hier
    };
    struct Struct1
    {
        Foo base;
        int a;
    };
    
    struct Struct2
    {
        Foo base;
        int a;
        int b;
    };
    

Anmelden zum Antworten