このようなコードをMSVS6からVS2010に移行しています。
class A
{
protected:
typedef void (A::*X_t)(int x);
virtual void CallX(X_t x) {}
virtual void X() {}
virtual void X(int x) {}
};
class B: public A
{
protected:
virtual void X()
{
this->CallX(&A::X);
}
};
これはMSVS6でコンパイルされますが、VS2010では失敗します
error C2248: 'A::X' : cannot access protected member declared in class 'A'
このエラーから抜け出す方法はありますか?