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()); }