struct von unbekannter bauart übergeben...
-
Hallo,
ich möchte gerne ein struct an eine Funktion übergeben. Allerdings ist wird erst zur Laufzeit festgelegt, welcher struct von zwei structen verschiedener Bauart übergeben werden soll. Kann ich das, einen struct an eine Funktion übergeben, ohne zu sagen wie dieser aussehen soll?
mfG,
MatthiasK
-
Mir würde spontan einfallen:
1. Du leitest beide structs von einer Basisklasse ab und übergibst einen Zeiger auf diese Basisklasse
2. Wenn es nur zwei structs sind, dann übergibst Du zwei Zeiger. Je nachdem welches struct Du übergibst ist das andere 0. Ist vielleicht etwas unschön.
Aber mal sehen, was die anderen sagen ...
-
Hallo
nein, der Parameter-Typ muß fest sein.
Aber du kannst einen Typ wählen, den du zur Laufzeit anpassen kannst.
Als erstes könntest du die Funktion für beide struct-Typen überladen und in jeder einzelnen dann individuell das struct bearbeiten.
Desweiteren kannst du einen void-Pointer auf das struct übergeben, denn du dann auf basis einem zusätzlichen Typ-Parameter wieder auf das ürsprüngliche struct casten kannst (ist aber die schlechteste Methode)
Außerdem kannst du den beiden structs noch eine gemeinsame Basisklasse verpassen, die du dann anstatt der spezialisierten struct-Typen als Parameter verwendest. Wenn du dann gut mit virtuellen Funktionen arbeitest, must du in der Funktion gar nicht mehr wissen welcher Typ es nun wirklich ist.bis bald
akari
-
Mir ist als erstes ein Template eingefallen. Kommt aber darauf an, ob beide Structs die gleichen Member-Namenskonventionen haben. Aber vermutlich ist in dem Falle eine Ableitung am besten.
-
akari schrieb:
Aber du kannst einen Typ wählen, den du zur Laufzeit anpassen kannst.
Aha, das klingt interessant, wie könnte so etwas denn aussehen?
-
MatthiasK schrieb:
akari schrieb:
Aber du kannst einen Typ wählen, den du zur Laufzeit anpassen kannst.
Aha, das klingt interessant, wie könnte so etwas denn aussehen?
Damit habe ich nur eine meiner drei bereits genannten Möglichkeiten gemeint :
- Überladen
- void- Casten
- virtuelle Basisklassebis bald
akari