inflearn logo
강의

講義

知識共有

C++とUnrealで作るMMORPGゲーム開発シリーズ Part1: C++プログラミング入門

関数ポインタ#2

멤버 함수 포인터 질문입니다.

326

Windfall

投稿した質問数 57

0

함수 원형 선언같은 경우는 정의는 밑에 있고 

맨위에 원형만 선언해주면 이  함수를 쓸거니까 알아둬라

이런 의미로 넘어가는걸로 알고있는데

typedef int(Knight::*PMEMFUNC)(int, int);

이 구문은 왜 그렇게 넘어가질 않는지 궁금합니다

 

C++

回答 2

3

Rookiss

typedef int(Knight::*PMEMFUNC)(int, int);

이거는 선언만 하겠다가 아니라, type define (타입을 정의하는) 행동입니다.
말씀하신 선언만 하겠다 << 가 목표라면 typedef가 붙을 필요가 없습니다.
typedef의 의미는, int, short, float와 같은 타입을 우리가 임의로 정의하는 것입니다.
위에서는 특정 시그니처 (int, int 인자로 받고 int 반환하는 Knight의 멤버 함수)를 만족하는 함수를
PMEMFUNC라는 타입으로 정의하려는 것이 목표입니다. 그러면 PMEMFUNC는 int, short, float와 같은
하나의 타입으로 지위를 인정받을 수 있습니다.

문법에서 위 부분을 3 파트로 끊어서 읽을 수 있는데

int(Knight::*)(int, int);   Knight의 멤버 함수이고, 인자로 (int, int)를, 반환을 (int)로 하는 함수 타입을...
PMEMFUNC                      PMEMFUNC라는 이름으로...
typedef                                부르겠다!

라고 생각하시면 되고, 확실히 빨간색 부분 위치가 중간에 있어서 읽기가 힘들긴 합니다.
그래서 C++11에서는 using 문법에 추가되어 아래와 같이 표현도 가능합니다.

using PMEMFUNC = int(Knight::*)(int, int);

 

0

Windfall

아 감사합니다!!

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

541

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

442

1

strcpy() 구현 관련 질문

0

513

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

453

1

클래스 타입의 포인터 질문합니다

0

546

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

498

1

템플릿 특수화 관련 질문

0

385

1

포인터 관련 질문합니다!

0

265

1

Unable to start assembler. Check your settings.

0

831

2

cpu선택

0

540

1

포인터 질문이 있습니다

0

324

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

585

1

iterator 삭제관련

0

406

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

310

1

15 분 45초 대 질문

0

309

0

스택 프레임 질문합니다!

2

306

1

오른값 참조 in 게임

0

384

0

동적할당 질문이 있습니다

0

450

1

안녕하세요 메모리에 대해 질문드립니다.

0

305

1

함수객체 의 매개변수

0

360

1

복사생성자

0

434

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

421

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

355

1

스택 오버플로우

2

790

1