私は2つの関数を持っていますが、これは引数として関数を取りますが、これはうまくいきます。C++は渡された関数を使用しています
class XY {
public:
void first(void f());
void second();
};
void XY::first(void f()){
}
void XY::second(){
f(); //passed function from first()
}
私は2つの関数を持っていますが、これは引数として関数を取りますが、これはうまくいきます。C++は渡された関数を使用しています
class XY {
public:
void first(void f());
void second();
};
void XY::first(void f()){
}
void XY::second(){
f(); //passed function from first()
}
あなたは呼び出し可能に保存し、後でそれを呼び出すためにのstd ::機能を使用する場合があります。
class X {
public:
void set(std::function<void()> f) {
callable = f;
}
void call() const {
callable();
}
private:
std::function<void()> callable;
};
void f() {
std::cout << "Meow" << std::endl;
}
そして、Xのインスタンスを作成し、呼び出し可能な設定:
X x;
x.set(f);
後で呼び出し保存呼び出し可能:
x.call();
upvoted、すばらしいC++ 11答え、テンプレートは
@userスペースを節約するために、通常は本やプレゼンテーションで必要となるので、必要なヘッダーを省略します。 –
ブックやプレゼンテーションにスペース制限はありません。書籍やプレゼンテーションにはプリプロセッサディレクティブ'#include'が推奨されます。 –
あなたは最初から2番目呼び出したり、後でにおいて第2の独立して呼び出す行うのですかポイント? – NineBerry
これを見てみたいかもしれません。 http://stackoverflow.com/questions/12662891/passing-a-member-function-as-an-argument-in-c – Transzendental
Firstは1回呼び出され、2回目は独立して呼び出されます。 – Maximilian