Ich habe ein Objekt vom Typ Child, die mit unbekannten T initialisiert wurde. Ich muss ein neues Objekt des gleichen Typs T als dieses Objekt erstellen. Mein Objekt vom Typ Child hat eine untemplated Basisklasse Parent. Mein einziger Zugriff auf mein Objekt vom Typ Child erfolgt über einen Zeiger vom Typ Parent. Ist es möglich, diesen Zeiger auf Parent in einen Zeiger auf das Child-Objekt mit korrektem Template umzuwandeln? Oder sonst T vom Zeiger auf Parent erhalten?Übergeben von Eltern * zu Kind <T> * mit unbekanntem T, und erhalten T
Die einzigen Beispiele, die ich finden kann, kennen bereits T beim Gießen.
struct Parent{
};
template <typename T>
struct Child{
typedef T ValueType;
};
template <typename T>
void foo(Parent*) { }
// implementation
Parent* object; // provided from somewhere else, points to Child<T> of unknown T
foo<T>(object); // PROBLEM because T depends on what T the Child in object was templated with
Blick auf die „Prototyp "Entwurfsmuster – Leon