c ++模板化的Functor

时间:2013-11-21 17:19:06

标签: c++ functor

大家好我是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;
}

1 个答案:

答案 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