c ++划分任何数据类型的通用函数?

时间:2017-06-03 20:54:47

标签: c++ string templates generics type-conversion

我尝试使用单个函数来划分通常的数据类型(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;
    }   
}

1 个答案:

答案 0 :(得分:2)

由于除法总是需要特定于您的类型的细微差别,因此通用模板函数不是一种好方法。

但是你可以根据具体情况重载除法运算符。例如,对于类Foo,请确保此函数的原型在使用前位于翻译单元中:

Foo operator/ (const Foo& numerator, const Foo& denominator){
    // ToDo - your code here, and return a newly constructed Foo.
}

在调用网站上,这在句法上也会更加可口。