【发布时间】:2013-07-22 18:24:48
【问题描述】:
我有三个类交互如下。 Class A 包含 Class B 类型的私有成员。它还包含一个传递ClassC 类型对象的方法。然后,此方法调用ClassC 上的方法,将其类型为ClassB 的成员的特定接口(@987654325@)传递给它:
ClassA
{
void Foo(ClassC ObjectC)
{
ObjectC.Bar((ClassBInterface1) ObjectB);
}
ClassB ObjectB;
}
我的问题是:ClassA 不需要访问Interface1 中定义的ClassB 的方法。因此,在我看来,如果ClassA 的成员是ClassBInterface2 类型,而不是ClassB,会更优雅。在Interface1 下仍将 B 传递给 C 的同时是否可以这样做?
我能想到的唯一方法是在ClassA 的Bar 方法中将ClassBInterface2 类型转换为ClassB 并返回ClassBInterface1。
这是最好的方法吗?还是我应该保持原样?
非常感谢您的帮助。
【问题讨论】:
-
你的上下文中的类接口是什么:s?我最好的猜测是你过度设计了,但这个问题太抽象了,很难回答。
-
不要将一个接口类型转换成另一个接口类型,这违背了独立性的目的,我建议保持原样,或者将两种接口类型的 2 个引用保留到同一个对象。
标签: c++ interface polymorphism