![[C++][중급] 멤버 데이터 포인터, invoke [C++][중급] 멤버 데이터 포인터, invoke](https://mblogthumb-phinf.pstatic.net/MjAyMzAzMDNfMTQy/MDAxNjc3ODQ0MzUwMDc5.gIxyiOkbw-CAFLER9vrjHnmnyJ_Ln8jAdAVM5YuyTUsg.kgAakxjAc784Gj2g645pW2XihzOeSQsk1OWE3jxZH-Mg.PNG.ljk3815/image.png?type=w2)
오늘은 멤버 데이터를 가리키는 포인터에 대해 알아볼까 합니다. #include struct Point { int x; int y; }; int main() { int num = 0; int* p1 = # int Point::*p2 = &Point::y; *p1 = 10; // ok // *p2 = 10; // error Point pt; pt.
*p2 = 10; // pt.y = 10; // *((char*)&pt + p2) = 10; } 멤버 데이터를 가리키는 포인터를 일반 데이터의 포인터와 비교해보면 별거 아닌데 어려워 보이죠? 일반 데이터 포인터 int* p1 = # 멤버 데이터 포인더 int Point::*p2 = &Point::y; 포맷은 똑같은데 이 클래스의 멤버야.
정보만 넣어 주면 됩니다. 여기에서 잠깐, 분명히 Point 타입 객체를 선언하지 않았는데, p2는 무엇을 담고 있을까요?
p2에는 offset 값이 들어 있습니다. 공식 표준...
#멤버데이터포인터
원문링크 : [C++][중급] 멤버 데이터 포인터, invoke