GSI

함수가 많을 경우 함수 포인터를 사용해서 배열로 사용하는 방법이 편할때가 있다.

그래서 STL의 vector을 사용해서 함수 포인터 정보를 배열로 저장하고
해당 함수들을 콜해서 처리 하는 방법을 사용할까 한다.


함수 포인터로 사용한 원형을 typedef로 선언한다.

typedef ngevent (*PF)(EVENT_INFO* arg);

이렇게 선언한 후에 일반 포인터로 사용할 경우는 아래와 같이 하면 된다.

PF pf; //pf에 함수 포인터 연결

vector을 사용할 경우에는 아래와 같이 사용한다.

//선언
vector<PF>  m_ClickEventHandler;

//연결할 함수를 작성한다.
ngevent test(EVENT_INFO* arg)
{
 return 1;
}

ngevent test2(EVENT_INFO* arg)
{
 return 1;
}

//vector 함수에 추가
m_ClickEventHandler.push_back(test);
m_ClickEventHandler.push_back(test2);

//함수를 vector의 배열로 for문을 통해서 호출한다.
for(int i = 0; i < (int)m_ClickEventHandler.size(); i++)
{
      EVENT_INFO info;
      info._click2d.x = 10.f * (float)i;
      m_ClickEventHandler[i](&info);
}


//////////////////////////////////////////////////

Posted by gsi
: