문제 설명
이상한 범위 확인 연산자가 있는 C++ typedef (C++ typedef with strange scope resolution operator)
C++ 코드를 이식해야 하고 다음과 같은 이상한 typedef를 찾았습니다.
typedef uint32_t SomeClassName::* ptr;
대상 컴파일러는 MSVC++입니다. 내가 이해하는 한, 이것은 ptr
이라는 uint32_t*
에 대한 별칭을 생성합니다. SomeClassName::
이 있는 부분은 아무 쓸모도 없으며 호환되는 C++ 컴파일러에서 오류로 처리해야 합니다. 내가 맞거나 틀릴까요?
또한 특이한 범위 확인 연산자를 찾았습니다. SO에 대한 질문으로 이 질문에 답할 수 있지만 확실하지 않습니다.
참조 솔루션
방법 1:
This is a pointer to member. Specifically a variable of type ptr
can point to any uint32_t
data member of SomeClassName
. It can be used like this:
struct Foo {
int a;
int b;
float c;
};
Foo foo;
int Foo::* ptr;
ptr = &Foo::a;
foo.*ptr = 10; //Set foo.a to 10
ptr = &Foo::b;
foo.*ptr = 15; //Set foo.b to 15
//ptr = &Foo::c; //Won't compile