casten von void* zu std::map<> möglich?
-
Hallo,
ich habe wie so oft ein Problemchen.
Ich möchte einen vector aus std::function's erstellen, die teilweise unterschiedliche Rückgabetypen haben.
Ich habe daher den vector als std::vector<std::function<void*()>> definiert.
Das "Problem" ist, dass die Rückgabetypen nicht immer Pointer sind. Einige Funktionen geben ein Object vom Typ BaseClass* zurück, das ich ja problemlos von void* casten kann.
Allerdings sollen ein paar Funktionen eine std::map<int, BaseClass*> zurückgeben.Kann ich also ein void* zu std::map<int, BaseClass*> casten? Oder muss ich dafür einen neuen vector mit einer passenden std::function-Signatur erstellen?
-
Einen void Pointer kann man nicht einfach zu einer Klasse casten. Höchstens zu einem Pointer dieser Klasse, also auch
std::map<int, BaseClass*>*
. Ob das allerdings sinnvoll ist ist eine andere Frage. Woher weißt du überhaupt was dein void Pointer mal war? Vermutlich gibt es bessere Möglichkeiten das zu erreichen was du vorhast.
-
sebi707 schrieb:
Woher weißt du überhaupt was dein void Pointer mal war?
Der vector ist eigentlich ein vector aus vectoren von functions, ich hab das nur der Übersichtlickeit halber wegegelassen. Die lambda-Funktionen der jeweiligen functions-vectoren haben immer die selbe Signatur und den gleichen Rückgabetyp.
Und ja, es gibt andere Möglichkeiten, das Ziel zu erreichen, ich muss lediglich einer abstrakten Klasse 3 oder 4 zusätzliche Funktionen verpassen, also nichts unlösbares
Ich wollte nur wissen ob es vielleicht auch so möglich ist (ich bin schreibfaul ), also danke für die Info