gpt4 book ai didi

c++ - C++ 中一个类的多个接口(interface)

转载 作者:行者123 更新时间:2023-11-28 00:43:09 24 4
gpt4 key购买 nike

我有三个交互如下的类。 A 类 包含B 类 类型的私有(private)成员。它还包含一个方法,类型为 ClassC 的对象被传递到该方法。然后此方法调用 ClassC 上的方法,将其类型为 ClassB 的成员的特定接口(interface) (ClassBInterface1) 传递给它:

 ClassA
{
void Foo(ClassC ObjectC)
{
ObjectC.Bar((ClassBInterface1) ObjectB);
}
ClassB ObjectB;
}

我的问题是:ClassA不需要访问Interface1中定义的ClassB的方法。因此,在我看来,如果 ClassA 的成员是 ClassBInterface2 类型,而不是 ClassB 会更优雅。是否可以这样做,同时仍将 B 传递给 Interface1 下的 C?

我能想到的唯一方法是在 ClassA 的 Bar 方法中将 ClassBInterface2 类型转换为 ClassB 并返回到 ClassBInterface1

这是最好的方法吗?还是我应该保持原样?

非常感谢您的帮助。

最佳答案

如果您将 ObjectB 定义为 ClassBInterface2,则无法在运行时将其转换为 ClassBInterface1,因为它的内部结构不会不为人知。

您的方式是最好的方式,但您可以稍作修改。在调用 ObjectC.Bar 时,您不需要从 ClassB 显式转换为 ClassBInterface1,因为编译器会为您完成。

如果class B定义如下:

ClassB : public ClassBInterface1, ClassBInterface2
{

/*Class methods and attributes*/

}

您可以在调用 ObjectC 上的 Bar 函数时执行以下操作(假设 objectB 定义为 ClassB)

ObjectC.Bar(ObjectB);

关于c++ - C++ 中一个类的多个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com