プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【C++】コールバックというものを書いてみた

最近よく見かけるコールバックを簡単に書いてみた!

ここでは単純に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;
}

実際に使う場合は、例えば画像を読み込みした後にコールバックとして画像の生成をして表示を行ったり、ローディングの完了後にコールバックとして次のシーケンスへ移動するための処理を呼ぶようにしたり、メールの送信処理が完了した後のコールバックとして送信されましたの表示をするなど…いい例が思いつきませんね……