'함수포인터'에 해당되는 글 1건

  1. 2016.09.01 함수포인터 활용
프로그래밍/C++2016. 9. 1. 01:25

오늘 UI에서 버튼만드는 것을 했는데. 예전에 windows api공부할때 썻던 함수포인터가 생각나서 다시 복습해봤다.

개념은 아주 간단하다. 버튼을 예로 들자면

버튼 클래스에 함수를 담을수 있는 변수를 만들어놓고, 그곳에 원하는 함수를 저장한 다음에 해당 버튼이 클릭됬을때

해당 버튼에 저장된 함수를 실행하는 방식이다.


#include <iostream>

using namespace std;

 

 //이부분은 가독성을 위해. 의미는 반환형 void,인자로 void를 받는 함수를 저장할수있는 함수포인터를 만드는것 이다.

typedef void(*CallBackFunc)(void); 

 


void SoundUp() { cout << "SoundUp" << endl; } //소리를 키워주는 함수

void SaveData() { cout << "SaveData" << endl; } //데이터를 저장해주는 함수

void ExitGame() { cout << "ExitGame" << endl; } //게임을 종료하는 함수.


struct Button                                               //버튼 구조체.

{

CallBackFunc ButtonFunc;    //아까 typedef로 선언해둔것을 사용한다. 반환형 void 인자로 void를 받는 함수를 저장할수있는 함수 포인터 변수 선언

void ClickButton()

{

ButtonFunc();

}

};


void main()

{

Button temp;

temp.ButtonFunc = SoundUp; //함수 포인터에 SoundUp함수 저장.

temp.ClickButton();


temp.ButtonFunc = SaveData; //함수 포인터에 SaveData함수 저장.

temp.ClickButton();


temp.ButtonFunc = ExitGame; //함수 포인터에 ExitGame함수 저장.

temp.ClickButton();

}


출력결과

SoundUp

SaveData

ExitGame

Posted by JinFluenza