大家好我是c +的新手,我有一个关于模板化仿函数的问题,我正在自己创建一个简单的模板仿函数,但只是想知道为什么当我尝试添加时它返回的值总是“1”两个价值观一起。
class AddValue{
private:
int x;
public:
template <class T, class U>
bool operator() (const T &v1, const U &v2)
{
x = v1 + v2;
return x;
}
};
int main(){
AddValue addvalue;
int a = 3;
int b = 6;
cout<< addvalue(a, b) << endl;
return 0;
}
答案 0 :(得分:2)
bool operator() (const T &v1, const U &v2) // You're returning bool
//^^ should be T
另外,你需要
T operator() (const T &v1, const U &v2)
{
T x = v1 + v2; // Notice x type as T
return x;
}
请参阅Here