コンパイラ エラー C2243
'type1' から 'type2' の 'conversion type' 変換は存在しますが、アクセスできません。
アクセス保護 (protected
または private
) によって、派生クラスへのポインターから基底クラスへのポインターに変換できませんでした。
次の例では C2243 が生成されます。
// C2243.cpp
// compile with: /c
class B {};
class D : private B {};
class E : public B {};
D d;
B *p = &d; // C2243
E e;
B *p2 = &e;
protected
または private
アクセスの基底クラスは、派生クラスのクライアントからはアクセスできません。 これらのレベルのアクセス制御は、基底クラスが、クライアントに表示される必要がない実装の詳細であることを示すために使用されます。 派生クラスのクライアントが派生クラスのポインターから基底クラスへのポインターへの暗黙的な変換にアクセスする必要がある場合は、パブリック派生を使用します。