C++ c++;用于划分任何数据类型的泛型函数?
我试图使用一个函数来划分常用的数据类型(int、double、float、long、string、char),但在将通用字符串转换为数字类型时遇到了问题。这就是我到目前为止所做的: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;
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博士是的。如果你需要具体,那么你应该专门化模板。或者采取完全不同的方法。