[英]A confusing typedef involves class scope
我正在閱讀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*
是它的類型。
所以整個聲明意味着
ns::A*
類型B
的指針到成員變量
@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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.