์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํด์ C++ ์ฝ๋ฐฑํจ์๋ฅผ ๊ตฌํํ๊ณ ์ถ์ด๋ค
๊ทผ๋ฐ ์ธ์คํด์ค์ ๋ฉค๋ฒํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ์ถ์ต๋๋ค ์ถ๊ฐ์ ์ผ๋ก ๋คํ์ฑ๋ ์ ์ฉ์ด ๋์ด์์ผ๋ฉด ์ข์๊ฑฐ๊ฐ์ต๋๋ค
Scene_Title์ Scene์ ์์ํ ์ํ์ด๊ณ Scene์ ์์ ๊ฐ์ํจ์๊ฐ ํ๊ฐ์ด์ ์๋ ์ํ์
๋๋ค
std::function<void(Scene&)> func = &(Scene::CallBack) ์ด๊ฑด ๋ฌธ์ ๊ฐ ์๋๋ฐ
std::function<void(Scene&)> func = &(Scene_Title::CallBack) ์ด๋ฐ์์ผ๋ก ํ๋ ๋ฐฉ๋ฒ ์์๊น์.. ์บ์คํ ์ ํ๋ฉด ๋ ๊ฑฐ๊ฐ๊ธฐ๋ ํ๋ฐ
์ด๋ค์์ผ๋ก ์บ์คํ ํด์ผํ ์ง ๊ฐ์ด ์์์..
๋น์ฐํ ์ฝ๋ฐฑํจ์ ๋ฑ๋กํ ๋๋ ๋ฑ๋ก๋นํ๋ ์ชฝ์์ ์ธ์คํด์ค๋ฅผ ๋ฉค๋ฒ๋ก ๋ค๊ณ ์๋ ์ํ์ ๋๋ค
(ex Button Class๊ฐ Scene_Title์ ๋ฉค๋ฒ๋ก ๋ค๊ณ ์์ต๋๋ค)
๊ทผ๋ฐ Scene ํ์ ์ ๋ฉค๋ฒ๋ก ๋ค๊ณ ์๊ณ ์ถ์ด์ง ๋ค๋ฅธ Scene์ย ์ธ์คํด์ค ํจ์๋ฅผ ์ฃผ์ ์ํค๊ณ ์ถ์๋๋ง๋คย ๋ฒํผ ํด๋์ค ์๋ก ๋ง๋ค์ด์ฃผ๋๊ฑด ์ข ์๋๊ฑฐ๊ฐ์์;;
ํจ์ํฌ์ธํฐ๋ ์ ๋ฐ์์ผ๋ก ์์ ์ธ์คํด์ค์ ๋ฉค๋ฒํจ์๋ฅผ ๋๊ธฐ๋ ๋ฐฉ๋ฒ ์๋๋ฐ ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋ณ๋ก๋ผ์ย
std::function ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ฐพ์๋ณด๊ณ ์๋๋ฐ ๊ฒ์ํด๋ ํค์๋๋ฅผ ์ด๋ป๊ฒ ์ก์์ผ ํ ์ง ๊ฐ์ด ์ ์์์
๋์์ฃผ์ธ์ฉ..
func๋ฅผ ํธ์ถํ ๋ ์ธ์๋ก ๋ฃ๋ ์ธ์คํด์ค์ ๋ฐ๋ผ ๋คํ์ฑ๋ ์ ์ฉ๋จ
Scene::CallBack๊ฐ ๊ฐ์ํจ์๋ฉด func๋ฅผ ํธ์ถํ ๋ Scene_Title ์ธ์คํด์ค๋ฅผ ๋ฃ์ผ๋ฉด Scene_Title::CallBack์ด ๋ถ๋ฆดํ ๋ฐ, ์ํ๋๊ฒ ๊ทธ๊ฒ ๋ง๋?
๊ทธ๋ผ std::function func = &(Scene::CallBack) ์ด๋ ๊ฒํด๋๊ณ Callback์ ์์๊ฐ์ํจ์๋ก ๊ตฌํํด๋๊ณ func๋ฅผ ๋ฉค๋ฒ๋ก ๋ค๊ณ ์๋ ๋ฒํผ ํด๋์ค๋ Scene*๋ฅผ ๋ฉค๋ฒ๋ก ๋ค๊ณ ์๋ ์ฌ์ฉํ๊ธฐ์ ์ Scene*์ ์์ ํ์ ์ธ Scene_Title์ ๋์ ์์ผ์ ์ฌ์ฉํด์ฃผ๋ฉด๋๋