如何在 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) );
}
}
编辑2
我为什么要这样做?
假设我必须定义一些非常重量级的属性,并且可以是几种相似类型(如 VelocityX VelocityY 等)。然后我希望能够拥有可以具有任何这些属性集的类。如果我想处理这些属性,很明显,我宁愿将它们转换为它们的基本类型,而不是为每个变体添加一个实现。我不使用公共继承,因为最好在需要的地方显式转换,而不是让私有接口隐式可见。不是一个真正的问题,但我想有一个解决方案:)