普通こんな使い方するんじゃね?

struct A {
struct B {
int x;
} moo;
} foo;

int main()
{
A::B *b = new A::B;
int A::B::*xx = &A::B::x;
b->*xx = 2;
std::cout << b->*xx << std::endl;
delete b;
}