Ich habe die folgende Funktion in einer C++ Anwendung, die viele verschiedene Zeiten aufgerufen:einziehe Vorlage Typname Objekt in C++
template<typename The_ValueType>
void
handleObject(The_ValueType const &the_value) //unchangable function signature
{
/*
//Pseudo Java code (not sure how to implement in C++)
if (the_value instanceof Person){
Person person = (Person) the_value
//do something with person
}
if (the_value instanceof Integer){
int theInt = (Integer) the_value
//do something with int
}
*/
}
Ich brauche einige Debug-Informationen aus dem „the_value“ Objekt auszudrucken. Leider bin ich von einem Java/JavaScript-Hintergrund, und ich bin furchtbar ineffizient und unkenntlich mit C++. Wenn ich versuche, in C++ zu reduzieren, erhalte ich den Fehler "ungültiger Zieltyp für dynamic_cast". Wie kann der "Pseudo-Java-Code" implementiert werden? Im Grunde muss ich nur wissen, wie man den Downcast macht, sei das Objekt ein Primitiv oder ein Objekt. Ich reiße mir die Haare aus und versuche, Hinweise und Casting zu verstehen, und jede Anleitung würde sehr geschätzt werden.
-Code wie diese, die in Java ziemlich häufig sein kann, ist ein Anti-Muster in C++. Wenn für Ihr Design ein hartcodierter Runtime-Variablenversand erforderlich ist, verbessern sich Ihre Designanforderungen wahrscheinlich. –