c++: überschreiben von template-member-Funktion in übergeordneten Klasse

Nehmen wir an, ich habe so eine Struktur der Klassen: Basisklasse Object, die in einer übergeordneten Klasse Bool, Int, Float, Bytes und Unicode Klassen. Ich hatte vor, einige Funktionen wie Bool cast_bool() const, Int cast_int() const usw. als virtuelle Funktionen in der Object Klasse und in allen Kind-Klassen, die ich habe, umgesetzt werden diese Funktionen getrennt.

Scheint es, dass eine bessere Lösung ist die Umsetzung template <typename TYPE> TYPE cast() const - Funktion statt. Da jedoch C++ verbietet virtual-template-Funktionen, die ich don ' T wissen, wie kann ich diese Aufgabe abzuschließen. Was ich brauche ist template <typename TYPE> TYPE cast() const für Object und seine childs. Generische Object::cast<TYPE>() const wird nur werfen CastError; dann für jeden Typ, wie Bool, Int usw. Ich werde implementieren, die Funktionen wie Bool::cast<Bool>() const, Int::cast<Bool>() const usw. Ich bin auch in Planung cast builtin-Objekte, obwohl ich jetzt nur überlastung operator bool() const, operator signed short() const usw. Wenn es keine Implementierung, template wechseln müssen, um seine generische form von Object Klasse, gerade zu werfen ist ein Fehler. Gibt es einen Weg, es zu tun (vielleicht brauche ich, um verwenden einige Muster)? Oder es ist einfacher zu verlassen Funktionen wie Int cast_int() const? Vielen Dank im Voraus!

  • Wenn Ihre Umwandlung von Daten in der base-Klasse, es gibt keinen Grund, warum können Sie nicht fügen Sie ein Vorlagen-member-Funktion auf der gleichen Basis-Klasse. Dann haben die Kind-Klassen aufrufen, die. Oder vielleicht bin ich missunderstanding die Frage.
InformationsquelleAutor ghostmansd | 2013-07-11
Schreibe einen Kommentar