C++ c++;用于划分任何数据类型的泛型函数?

C++ c++;用于划分任何数据类型的泛型函数?,c++,string,templates,generics,type-conversion,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;

我试图使用一个函数来划分常用的数据类型(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;
    }   
}
模板
施工图和分部(施工图和施工图、施工图和施工图)
{
if(typeid(a)=typeid(字符串))
{
细流ss;
先浮后浮;
ss>第一;
ss>2;
串流输出;
输出>结果;
返回结果;
}   
}

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

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

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

这在调用站点的语法上也更容易接受。

“我正试图使用一个函数来划分任何数据泛型类型”-听起来不太好,您的代码尝试证明了这一点。你到底想解决什么?任何类型的?如果我定义一个人类呢?
person1/person2
是什么意思?充其量也只是无稽之谈。什么样的麻烦?请阅读。在泛型函数中执行特定类型的操作不被认为是不好的做法吗?@Fre博士是的。如果你需要具体,那么你应该专门化模板。或者采取完全不同的方法。