こういうことをBoost::pythonを使ってやりたいです。

C言語側

struct A{
    int x;
    int y;
}
struct B{
    int id;
    A a;
}

Python側

b = B()
b.a.x = 0
b.a.y = 1
b.id = 25

Boost.pythonで試してみたところ、

boost::python::class_<B>("B")
    .def_readwrite("id", &B::id);

は動作して、上記コードスニペットでb.id = 25 にあたる部分は正常動作します。
ですが、

boost::python::class_<B>("B")
    .def_readwrite("a", &B::a);

では、b.a までは動いても、b.a.x の呼び出しができません。

おそらく、構造体/クラスのメンバ変数にユーザ定義の構造体/クラスが含まれる場合に特別な書き方があるのだろう、と思います。
書き方のポイントを教えていただけますでしょうか。