令人困惑的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。
所以整个声明的意思
B
types的指针 – 成员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; }