I\'m reading code of a C++ project and it contains some code of the following form:
namespace ns {
class A {};
class B {};
}
struct C {
typedef ns::
ns::B::*
is a pointer-to-member-variable of B
. Then ns::A*
is its type.
So the whole declaration means
pointer-to-member-variable of B
of type ns::A*
The answer by @vsoftco already answers the core of the question. This answer shows how one might use such a 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;
}