Frage zu Template Funktion mit internem Funktionsaufruf



  • Ich habe eine Klasse die Verwaltungsaufgaben mit Containern für mich erledigt. Um Code duplizierung durch evrschiedene get Funktionen die alle im Grunde das selbe aber mit verschiedenen containern tun wolte ich diese get Funktionen als Template realisieren. Die Einträge in den Containern, sowie die Container selbst basieren auf dem jeweils gleichen Template, somit sind die Zugriffe in eienr generellen funktion nicht das Problem, aber ich habe eine Stelle drin in der ich eine Bestimmte Funktion aufrufen muß, jenachdem wie das Template aufgerufen wird.

    So eine Lösung schwebt mir vor:

    if(typeid(X)==typeid(Y))
    {
        //Funktion für Y aufrufen
    }
    else if(typeid(X)==typeid(Z))
    {
        //Funktion für Z aufrufen
    };
    

    Leider macht mir der Compiler dabei einen strich durch die Rechnung. Die aufzurufende funktion ist vorgegeben und je nachdem was im Container ist passen die daten nur genau auf eine Funktion. Meine Frage ist jetzt wie kann ich das Lösen? Die Funktion ist im Header der Klasse nur deklariert und in der Quelltextdatei deffiniert, somit kann ich ganz genau sagen mit welchen Typen die Funktion aufgerufen werden wird.

    Edit:
    Ich habe vergessen zu erwähnen das das Grundsätzliche Layout der aufzurufenden Funktionen gleich ist, dh bis auf den falschen Typen passen meine Variablen genau rauf, nur ein reinterpret_cast um den Compiler friedlich zu stimen wäre eher meine letzte Wahl.



  • Du könntest für diesen Code-Abschitt z.B. in eine Template Funktion definieren, und diese für deine einzelnen Typen "spezialisieren".


Log in to reply