Ich versuche, eine generische toString() - Funktion zu implementieren, die auf allen Typen funktionieren würde. Alle unsere internen Klassen stammen von Abstract, das eine Signatur für toString() enthält. Mit anderen Worten, alle unsere internen Klassen haben in irgendeiner Form eine toString-Methode.C++ Vorlage Spezialisierung Frage
Das Problem ist, die primitiven Typen (int, char, double ..) haben keine native toString-Funktion. Aber wir haben eine Dienstprogrammfunktion, die lexical_cast aufruft, um den Zeichenfolgenwert des Grundelements zurückzugeben. Wir wollen nicht eine ganze Menge von if-Anweisungen abhängig. Also versuche ich, eine templated Utility-Klasse zu erstellen, die diese Aufgabe übernehmen würde.
Mein erster Hack auf das ist die folgende Liste:
template<class T>
class ObjectToString {
public:
string objectToString(T value) {
iil::stringUtils::StringSp ret(stringUtils::valueToString<T>(value));
return ret;
}
};
template<>
class ObjectToString <Abstract<T>*> {
public:
iil::stringUtils::StringSp objectToString(Abstract<T>* value) {
return iil::stringUtils::StringSp(new std::string("AAAA"));
}
};
Das Problem ist jetzt, da Zusammenfassung eine Templat-Klasse ist, muss er die Vorlage Wert T. Ich habe keine Ahnung, wie das setzen. Könnte jemand beraten?
klingt wie Sie Java implementieren –