令人困惑的typedef涉及类范围

我正在阅读C ++项目的代码,它包含以下forms的代码:

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的指针成员variables。 那么ns::A*是它的types。

所以整个声明的意思

Btypes的指针 – 成员variablesns::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; } 
Interesting Posts