1
私の初期化されたファンクションオブジェクトをいくつかの方法で自分の関数に渡したいと思います。ファンクションオブジェクトを関数の引数として渡す
「for_each」というだけの機能を持つ例は見つかりませんでしたが、私が理解する限り同じように動作するはずです。
void f(int& n, void (*g)(int& m)){ g(n);};
class TEST{
public:
int init=0;
TEST(int _init):init(_init){}
void operator() (int& m) {m+=init;}
};
int main(int argc, char *argv[])
{
int k, m;
cin >> k >> m;
TEST mytest(m); // OK, creates object with initialization
mytest(m); // OK, using initialized object's "operator()"
f(k,mytest); // error: cannot convert 'TEST' to
// 'void (*)(int&)' for argument '2'to
// 'void f(int&, void (*)(int&))'
f(k,TEST(m)); // error: cannot convert 'TEST' to
// 'void (*)(int&)' for argument '2'to
// 'void f(int&, void (*)(int&))'
return 0;
}
'テンプレート空隙F(INT&N、FのG){G(N);};' –
...関数オブジェクトは広い用語であり、そして一般的に*関数に変換できないためポインタ*。 – StoryTeller
mytestはintではありません。mytestを試してみましたか? –