c++ 함수포인터를 매개변수로 받을때 주의사항

윤태웅·2021년 8월 18일
0

c++

목록 보기
1/6

언리얼을 접하고 배우던중에 궁금한점이 생겼다.

클래스의 멤버함수를 콜백함수로 등록하는 기능을하는 함수가 있다.

InputComponent->BindAxis("MoveForward", this, &ACollidingPawn::MoveForward);

요런 모양새인데, 내가 궁금했던것은 ACollidingPawn::MoveForward앞에 &연산자가 왜 있는지 이다.

예전에 c++ 기초를 한창 배울때는 함수는 이름자체가 포인터라고 배웠는데, 뭔가 알고있는것과 맞지 않는 기분이 들었다. 그래서 구글링해보니 답이나왔다.

https://stackoverflow.com/questions/42150125/why-must-i-use-address-of-operator-to-get-a-pointer-to-a-member-function

내가 알고있던 개념은 전역함수와 클래스 내부에 정의된 static함수에 한해서만 성립하는 것이었다.
c++이 전역함수와 클래스 내부의 static함수에 대해서만 암시적 형변환으로 &연산자를 붙이지않아도 붙인것처럼 동작하는 것이고, 클래스의 멤버함수에 대해서는 무조건 &연산자를 붙여야한다.

0개의 댓글

관련 채용 정보