2013-11-21 166 views
0

嗨,大家好我是新來的C++和我有一個關於模板仿函數的問題,我創建了一個簡單的模板仿函數,但只是想知道爲什麼它返回的值總是「1」嘗試將兩個值一起添加。c + +模板函數

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; 
} 

回答

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

+0

@POW感謝您的及時答覆,我很欣賞它..我是正確的說,如果我比較與我實際使用'bool operator()'2不同的val,但是如果我想返回任何函數的值而不是'T operator()'和'T x'是什麼意思? – user2975932

+0

返回類型和添加非常棘手。 T和V可以是任何東西。但是將它們加在一起會產生什麼結果?你的意思是讓'v1'和'v2'是同一類型嗎? – andre

+0

@ user2975932是的比較布爾結果是可取的 – P0W