【发布时间】:2010-11-19 22:54:29
【问题描述】:
假设我想要一个 C++ 函数对两个输入执行算术运算,并将它们视为给定类型:
伪:
function(var X,var Y,function OP)
{
if(something)
return OP<int>(X,Y);
else if(something else)
return OP<double>(X,Y);
else
return OP<string>(X,Y);
}
适合 OP 的函数可能是这样的:
template <class T> add(var X,var Y)
{
return (T)X + (T)Y; //X, Y are of a type with overloaded operators
}
那么,问题是函数的签名是什么样的?如果运算符函数是非模板化的,我可以这样做,但我对这种额外的复杂性感到困惑。
【问题讨论】:
-
查看模板模板参数。 (这不是错字。)
-
+1,这基本上就是通过OP的正确答案了。
-
我添加了这个作为答案。我希望我没有把任何愚蠢的错误放进去。
标签: c++ templates operator-overloading