15일차 (1/2)
2024. 1. 2. 10:59ㆍUnreal 강의
함수 포인터
//이런 형식으로 사용된다.
void (*변수명)()
//초기화는 보통 이렇게 한다.
void (*Function)() = nullptr;
//변수명 없이 사용하면 함수 포인터의 자료형이다.
void(*)()
함수 포인터는 특정될 수 없다.
함수 포인터의 사용법은 함수의 포인터이기 때문에 이름만 다른 해당 함수처럼 사용하게 된다.
명시적으로 사용하는 경우는 보통 UI 등등에서 가장 많이 사용된다.
class Button
{
public:
virtual void Click() {}
public:
int Image;
int Color;
int ScreenPos;
};
class MoveButton : public Button
{
public:
void Click() override
{
printf_s("플레이어가 이동합니다.");
}
};
class AttackButton : public Button
{
public:
void Click() override
{
printf_s("플레이어가 공격합니다.");
}
};
int main()
{
{
MoveButton MButton;
AttackButton AButton;
MButton.Click();
AButton.Click();
}
}
위와 같이 모든 버튼을 각각 클래스를 만들어서 상속받아 사용하게되면 너무 많은 클래스를 만들어야 된다.
그래서 이럴때 함수 포인터를 이용한다.
void PlayerAttack()
{
printf_s("플레이어가 공격합니다");
}
void PlayerMove()
{
printf_s("플레이어가 이동합니다");
}
class Button
{
public:
virtual void Click()
{
// 이렇게 부모 클래스에 함수 포인터를 만들고 함수만 사용하는 것을 콜백 방식이라고 한다.
Function();
}
public:
void (*Function)() = nullptr;
int Image;
int Color;
int ScreenPos;
};
int main()
{
{
Button AttButton;
Button MoveButton;
AttButton.Function = PlayerAttack;
MoveButton.Function = PlayerMove;
MoveButton.Function = PlayerAttack;
AttButton.Click();
MoveButton.Click();
}
}
'Unreal 강의' 카테고리의 다른 글
17일차 (1/4) (0) | 2024.01.04 |
---|---|
16일차 (1/3) (0) | 2024.01.03 |
14일차 (12/29) (0) | 2023.12.29 |
13일차 (12/28) (0) | 2023.12.28 |
12일차(12/27) (0) | 2023.12.27 |