【发布时间】:2009-05-20 10:46:47
【问题描述】:
我正在尝试实现一个适用于所有类型的通用 toString() 函数。我们所有的内部类都派生自 Abstract,其中包含 toString() 的签名。换句话说,我们所有的内部类都有某种形式的 toString 方法。
问题是,原始类型(int、char、double..)没有本机 toString 函数。但是我们确实有一个实用函数,它调用 lexical_cast 来返回原语的字符串值。我们不想要一大堆 if 语句取决于所以我正在尝试创建一个模板化的实用程序类来完成这项工作。
我的第一个技巧如下:
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"));
}
};
现在的问题是,由于 Abstract 是一个模板类,它需要模板值 T。我不知道如何设置它。有人可以建议吗?
【问题讨论】:
-
听起来你们实现了 Java
标签: c++