Struct-Typ als Parameter zur Laufzeit bestimmen



  • Hallo,

    ich suche eine Möglichkeit eine vorher nicht bekannte struct als Parameter zu übergeben.
    Pseudo-Idee:

    void func abc(struct sDemo) {}
    

    Ich habe ein Pool aus n verschiedenen structs(wachsend) und möchte nicht für jede eine eigene Funktion schreiben

    void func abc(A a) {}
    void func abc(b b) {}
    ...
    

    Meine Idee war da ich aus dem Bereich Java komme eine Mutter-Struct zu erstellen von der alle anderen structs erben müssen.

    struct mom {};
    struct child1:mom {};
    struct child2:mom {};
    void func abc(mom *s)
    { 
    // do something;
    }
    int main
    {
    abc(child1); // FEHLER
    abc(child2); // FEHLER
    return 0;
    }
    

    Leider funktioniert dies nicht.
    Ich suche Vorschläge mit welchen tools ich dies realisieren könnte.

    mfg cuanuriaq



  • Das machst man entweder mit Vererbung oder mit Templates.

    Vererbung:

    struct mom {};
    struct child1 : public mom {};
    struct child2 : public mom {};
    void abc(const mom& s)
    {
      //do something;
    }
    
    int main()
    {
      abc(child1());
      abc(child2()); 
    }
    

    Templates:

    struct child1 {};
    struct child2 {};
    
    template <class T> void abc(T&& s)
    {
      //do something;
    }
    
    int main()
    {
      abc(child1());
      abc(child2()); 
    }
    

Log in to reply