C ++でプライベート基本クラスへのキャストを実装するにはどうすればよいですか?友達を追加するなどのハックは使いたくない。パブリックキャスティング演算子の定義は機能しない。
編集 :
たとえば、私は持っています:
class A {
//base class
}
class AX : private A {
//a child
}
class AY : private A {
//another specialized child
}
class B {
//base class
void do (A a) {//do
}
}
class BX : private B {
//a child
void do (AX a) {
B::do( static_cast <A> (a) );
}
}
class BY : private B {
//another specialized child
void do (AY a) {
B::do( static_cast <A> (a) );
}
}
EDIT2
なぜ私はこれをするのですか?
非常に重量があり、いくつかの同様のタイプ(VelocityX VelocityYなど)のプロパティを定義する必要があるとします。次に、これらのプロパティの任意のセットを持つことができるクラスを持つことができるようにしたいと思います。これらのプロパティを処理したい場合は、バリエーションごとに実装を追加するのではなく、基本タイプにキャストしたいのは明らかです。プライベートインターフェイスを暗黙的に表示するよりも、必要な場所に明示的にキャストする方がよいため、パブリック継承は使用しません。本当の問題ではありませんが、解決策が欲しいです:)