pointer 사용법

pointer 사용법

2025년 10월 10일

멤버 포인터 #

데이터 멤버 포인터 #

1int Base::* bp = &Base::b0;
2Base* b = new Base();
3b->*bp;  // 이렇게 접근하면 무조건 b0을 가리킴

bp는 Base의 int형 멤버를 담는 포인터라는 의미이고, b0이나 b1이나 뭐 어쨌든 Base의 int형 멤버라면 뭐든 담을 수 있다.

사실 객체가 있다면 b->b0 처럼 직접 접근할 수 있지만, 객체가 없는 경우엔 필드 선택자처럼 들고다닐 수 있다는 장점이 있다.

이런게 가능하다.. 같은 타입의 필드가 여러개 있다면 필드를 런타임에 결정하는 것이 가능해짐..

1int Base::* pick(const std::string& name) {
2  return name=="b0" ? &Base::b0 : &Base::b1;
3}
4Base x{1,2}; auto m = pick("b1");
5int v = x.*m;         // x.b1
comments powered by Disqus