我尝试使用单个函数来划分通常的数据类型(int,double,float,long,string,char),并且无法将通用字符串转换为数字类型。这就是我到目前为止所做的:
template <typename T>
T const& Division(T const& a, T const& b)
{
if (typeid(a) == typeid(string))
{
stringstream ss;
float first, second;
ss << a;
ss >> first;
ss << b;
ss >> second;
stringstream output;
output << first / second;
T result;
output >> result;
return result;
}
}
答案 0 :(得分:2)
由于除法总是需要特定于您的类型的细微差别,因此通用模板函数不是一种好方法。
但是你可以根据具体情况重载除法运算符。例如,对于类Foo
,请确保此函数的原型在使用前位于翻译单元中:
Foo operator/ (const Foo& numerator, const Foo& denominator){
// ToDo - your code here, and return a newly constructed Foo.
}
在调用网站上,这在句法上也会更加可口。