あ、すみません。
class B が関数内クラスになってました。

class A{
...
};

void XXXX(){
class B{
...
};
...
}

class Bを外に出したらうまくいきました。

(が、なぜ関数内だと駄目なのかは理解していない・・)