Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 함수 포인터 #1 본문
#include <iostream>
using namespace std;
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
class Item
{
public:
Item() : _itemId(0), _rarity(0), _ownerId(0)
{
}
public:
int _itemId; // 아이템 구분을 위한 ID
int _rarity; // 희귀도
int _ownerId; // 소지자 ID
};
typedef bool(ITEM_SELECTOR)(Item*, int);
Item* FindItem(Item items[], int itemCount, ITEM_SELECTOR* selector, int value)
{
for (int i = 0; i < itemCount; i++)
{
Item* item = &items[i];
if (selector(item, value))
return item;
}
return nullptr;
}
bool IsRareItem(Item* item, int value)
{
return item->_rarity >= value;
}
bool IsOwnerItem(Item* item, int ownerId)
{
return item->_ownerId == ownerId;
}
int main()
{
int a = 10;
typedef int DATA;
DATA* pointer = &a;
// 함수
typedef int(FUNC_TYPE)(int, int);
//using FUNC_TYPE = int(int a, int b); // 윗줄과 같은 내용이지만 추후 다룸
FUNC_TYPE* fn;
// 함수 포인터
fn = Add;
int result = fn(1, 2); // 기본 문법
cout << result << endl;
int result2 = (*fn)(1, 2); // 함수 포인터는 *(접근 연산자)를 붙여도 함수 주소를 가리킴
cout << result2 << endl; // 동작 방식이 기본 문법과 완전히 동일. 택1
Item items[10] = {};
items[3]._rarity = 2; // RARE
FindItem(items, 10, IsRareItem, 2);
FindItem(items, 10, IsOwnerItem, 100);
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 함수 객체 (0) | 2023.05.01 |
---|---|
[C++] 함수 포인터 #2 (0) | 2023.05.01 |
[C++] 전방선언 (0) | 2023.03.08 |
[C++] TextRPG (OOP) #1~3 (0) | 2023.03.03 |
[C++] 캐스팅 4총사 (0) | 2023.03.03 |