class A
{
public:
A() {}
void print(std::function<void(int)> func);
virtual ~A() {}
};
void A::print(std::function<void(int)> func)
{
func();
}
void printInt(int a)
{
std::cout << a << std::endl;
}
int main()
{
A a;
a.print(std::bind(&printInt, 3));
return 0;
}
私はこのコードサンプルを持っているとしましょう。 voidメソッドprintInt(int a)をA :: print(std :: function func)に渡し、渡された関数を呼び出す方法は?私は「候補者は1つの引数、0が提供されると期待しています」と私はそれに対処する方法を知らない。std :: functionとstd :: bindを使用して、パラメータを含むvoidメソッドを別のメソッドに渡すC++
編集: 私はそれを言及すべきでしたが、私の目標はその整数を渡すことですが、実際には私はどのように考えていません。私はこのような何かしようとすると:
void A::print(std::function<void(int a)> func)
{
func(a);
}
を私は「エラー: 『』このスコープで宣言されていません」を取得します。
引数なしで 'int'をとる関数を呼び出しています(' func() ')。 – 0x499602D2