9
這裏是我的問題: 我定義了一個函子:將匿名函數對象傳遞給std :: function?
class A {
public:
int operator()(int a, int b) const{
return a + b;
}
};
typedef function<int (int, int)> Fun;
然後我用一個匿名函子來創建一個std ::函數對象,我覺得有些奇怪。這裏是我的代碼:
Fun f(A());
f(3, 4);
不幸的是這是錯的。該錯誤信息是:
error: invalid conversion from ‘int’ to ‘A (*)()’ [-fpermissive]
error: too many arguments to function ‘Fun f(A (*)())’
但是,當我改變我的代碼如下:
A a;
Fun f(a);
f(3, 4);
或
Fun f = A();
f(3, 4);
結果是正確的。 那麼,爲什麼呢?請幫助我理解它。謝謝。
你打敗了我。最令人煩惱的解析問題的確如此。 – 2014-12-02 14:47:51
有時候,計算機科學中的術語會以誤導的方式命名。這不是其中之一。 – Yakk 2014-12-02 18:15:20