반응형
혼란스러운 typedef에는 클래스 범위가 포함됩니다.
C ++ 프로젝트의 코드를 읽고 있는데 다음 형식의 코드가 포함되어 있습니다.
namespace ns {
class A {};
class B {};
}
struct C {
typedef ns::A* ns::B::* type;
};
누군가 typedef
라인 의 의미를 설명 할 수 있습니까 ? type
의 멤버에 대한 포인터의 일종 것 같다 ns::B
가리키는하는 ns::A
,하지만 난 모르겠어요.
클래스 A
와 B
실제 코드는 비어 있지 않지만 여기서는 관련이 없다고 생각합니다. 그리고 여기에 실제 예가 있습니다.
ns::B::*
의 멤버에 대한 포인터 변수입니다 B
. 그런 다음 ns::A*
유형입니다.
따라서 전체 선언은
B
유형 의 멤버에 대한 포인터 변수ns::A*
@vsoftco의 답변은 이미 질문의 핵심에 대한 답변입니다. 이 답변은 그러한 typedef
.
#include <iostream>
#include <cstddef>
namespace ns {
struct A {};
struct B
{
A* a1;
A* a2;
};
}
struct C {
typedef ns::A* ns::B::*type;
};
int main()
{
C::type ptr1 = &ns::B::a1;
C::type ptr2 = &ns::B::a2;
ns::B b1;
b1.*ptr1 = new ns::A; // Samething as b1.a1 = new ns::A;
return 0;
}
참조 URL : https://stackoverflow.com/questions/33764533/a-confusing-typedef-involves-class-scope
반응형
'developer tip' 카테고리의 다른 글
Android TextView에서 지원하는 HTML 태그는 무엇입니까? (0) | 2020.12.31 |
---|---|
cronjob 대 리눅스의 데몬. (0) | 2020.12.31 |
상당한 규모의 실시간 시스템에 Haskell 사용 : 어떻게 (만약?)? (0) | 2020.12.31 |
importlib.import_module을 사용하여 Python에서 모듈을 가져 오는 방법 (0) | 2020.12.30 |
더 나은 "int 0x80"또는 "syscall"은 무엇입니까? (0) | 2020.12.30 |