İşte sorum şu: Bir functor tanımlamak: Anonim işlev nesnesini std :: function öğesine geçirin mi?
class A {
public:
int operator()(int a, int b) const{
return a + b;
}
};
typedef function<int (int, int)> Fun;
sonra bir std :: fonksiyon nesnesi oluşturmak için bir anonim functor kullanıyorum ve garip bir şey bulmak. İşte benim kodum:
Fun f(A());
f(3, 4);
Maalesef yanlış. Hata iletisi: Ancak
error: invalid conversion from ‘int’ to ‘A (*)()’ [-fpermissive]
error: too many arguments to function ‘Fun f(A (*)())’
, ben aşağıdaki gibi benim kodunu değiştirmek zaman:
A a;
Fun f(a);
f(3, 4);
veya
Fun f = A();
f(3, 4);
sonuç doğru. Peki, neden bu? Anladım, lütfen. Teşekkürler.
Bana onu dövdün. Çoğu parseli ayrıştırma problemi. –
Bazen, bilgisayar bilimlerindeki terimler yanıltıcı şekilde adlandırılır. Bu o zamanlardan biri değil. – Yakk