Typ (Subklasse) einer Abgeleiten klasse ermitteln??
-
Konstellation:
class Root{ }; class A : public Root{ }; class B: public Root{ }; Root **p = new *Root[3]; p[0]= new A(); p[1]= new B(); p[2]= new Root();
kann ich nun irgendwie mit dynamic_cast etc. ermitten um welchen Klassen typ es sich bei dem jeweiligen Array Pointer handelt??
-
BorisDieKlinge schrieb:
kann ich nun irgendwie mit dynamic_cast etc. ermitten um welchen Klassen typ es sich bei dem jeweiligen Array Pointer handelt??
Ja, kannst du, wie du schon sagtest, mit dynamic_cast.
Allgemein ist es aber ein Hinweis auf ein mögliches Designproblem, wenn du das in C++ überhaupt herausfinden musst. Wenn du diese Objekte nicht alle wie Root-Objekte behandeln kannst, solltest du sie nicht in ein Root*-Array packen.
-
und wie?
if(A== dynamic_cast (*p))
????Das Desigen sieht so aus:
class Group { Group **pArray; }; class Node : public Group{ }; class Tree{ Group *p; //Root };
muss zwischen gruppe und End Knoten untscheiden können
-
BorisDieKlinge schrieb:
muss zwischen gruppe und End Knoten untscheiden können
Dann regel das über virtuelle Methoden oder wirf die Objekte eben nicht in einen Topf.
-
ok chef;)
-
Wenn du es unbedingt unterscheiden willst (macht imho bestenfalls für Debugging-Zwecke Sinn):
Root* ptr = ...; A* typed_ptr = dynamic_cast<A*>(ptr); if(A) do_something();