最近よく見かけるコールバックを簡単に書いてみた!
ここでは単純にUpdateにてループしているときにコールバック関数があれば実行を行い、中身を消しています。
<iostream>って書くとタグとみなされて消えるので""に囲ってます。
#include "iostream" #include "functional" class Func { private: typedef std::function<void()> FunctionCallBack; public: Func() {} ~Func() {} void SetFunction(FunctionCallBack func) { m_func_callback = func; } void Update(float delta) { if (m_func_callback) { m_func_callback(); m_func_callback = NULL; } } private: FunctionCallBack m_func_callback; }; void Disp() { std::cout << "aiueo\n"; } int main() { Func* m_func(new Func); m_func->SetFunction(Disp); int i = 0; while (i++ < 100) { m_func->Update(0.0f); } return 0; }
実際に使う場合は、例えば画像を読み込みした後にコールバックとして画像の生成をして表示を行ったり、ローディングの完了後にコールバックとして次のシーケンスへ移動するための処理を呼ぶようにしたり、メールの送信処理が完了した後のコールバックとして送信されましたの表示をするなど…いい例が思いつきませんね……