コンパイラの警告 (レベル 3) C4243

'type1' から 'type2' の 'conversion type' 変換は存在しますが、アクセスできません

派生クラスへのポインターは、基底クラスへのポインターに変換されますが、派生クラスは、プライベート または保護されたアクセス権を持つ基底クラスを継承します。

次の例では C4243 が生成されます:

// C4243.cpp
// compile with: /W3
// C4243 expected
struct B {
   int f() {
      return 0;
   };
};

struct D : private B {};
struct E : public B {};

int main() {
   // Delete the following 2 lines to resolve.
   int (D::* d)() = (int(D::*)()) &B::f;
   d;

   int (E::* e)() = (int(E::*)()) &B::f; // OK
   e;
}