Laufzeit polymporphy
-
Hallo,
ich habe eine abstrakte Klasse Base von der zwei subklassen Sub1 und Sub2 erben und implementieren. Ich möchte in der main() dann so etwas schaffen:
das geht nicht weil mtx nicht bekannt.
if (flag) Sub1 mtx; else Sub2 mtx; mtx.foo();ich kann aber auch kein
Base mtx;vor das if schreiben weil ich ja nicht von abstraken klassen estellen kann.
Wie bekomme ich das hin?
-
Base* mtx; Sub1 mtx1; Sub2 mtx2; if (flag) mtx = &mtx1; else mtx = &mtx2; mtx->foo();
-
Oder halt Instanz mit new anlegen?

-
vllt schrieb:
Oder halt Instanz mit new anlegen?

Wenns denn sein muss ja.
-
Oder mittels dem trinären Operator:
Base& mtx = flag? Sub1() : Sub2(); mtx.foo();Habe es nicht ausprobiert, daher evtl. noch explizit nach "Base&" casten, falls der Compiler einen Fehler beim ?:-Operator wirft.
-
Th69 schrieb:
Oder mittels dem trinären Operator
Oo
ternär war wohl das gesuchte wort : P
-
Es gibt beide Bezeichnungen, s.a. http://de.wikipedia.org/wiki/Ternär
-
Ich kenne noch eine Bezeichnung: Trinitätsoperator

-
Ad aCTa schrieb:
Ich kenne noch eine Bezeichnung: Trinitätsoperator

Kernigham hat in dem von ruediger im RudP Forum verlinkten Video "the questionmark-colon-operator"-gesagt.
