あなたの質問に基づいて、答えは異なります。しかし、あなたのソースコードでは、答えはyesです。
answereに影響を与える2つの要因があります:変換なしフィットネスエクササイズ場合はキャストが再interpertキャストを呼び出すため
は、あなたがCスタイルのキャストを使用している場合、それはそうでしょう。ターゲットタイプのポインターに任意のタイプのポインターをキャストできます。しかし、MIがある場合、結果はほとんどのC++言語の実装では正しくない可能性があります。
メンバ関数内でキャスト(Cスタイルキャストなし)を行うと、メンバークラス内で基本クラスにアクセスできるため、answereはyesになります。式が基本クラスにアクセスできない場所にある場合、コンパイルエラーが発生します。
標準converstionについての詳細は、Cであり、++標準
A prvalue of type “pointer to cv D”, where D is a class type, can be converted to a prvalue of type “pointer to cv B”, where B is a base class (Clause 10) of D.
If B is an inaccessible (Clause 11) or ambiguous (10.2) base class of D, a program that necessitates this conversion is ill-formed.
The result of the conversion is a pointer to the base class subobject of the derived class object. The null pointer value is converted to the null pointer value of the destination type.
編集2:answere詳細を確認します。
私はそれが可能だと思いますが、それは私的継承の目的をちょっと打ち負かしてしまうかもしれませんが... – Nbr44
"私的な"継承の意味に従うのは良いことではないでしょう。この種の継承は、「実装されている」という意味であり、公開継承は「is-a」関係です。 – JBL
なぜこの恐ろしいハックが最初に必要なのですか? –