1
63
这个问题不常出现。我熟悉的解决方案是由DougMcIlroy设计的,并出现在Bjarne Stroustrup的书中(两本书都有介绍 C++的设计与演化 第12.8条和 C++程序设计语言 第25.6条)。根据中的讨论 设计与发展 有人提议优雅地处理这一具体案件,但被拒绝了,因为“这样的名字冲突不太可能变得足够普遍,不足以保证独立的语言功能”,“不太可能成为新手的日常工作”。
你不仅需要打电话
不漂亮,但决定是不经常需要。 |
2
6
在过去,我必须这样做,但是在我的例子中,我需要从一个接口继承两次,并且能够区分对每个接口所做的调用,我使用模板填充程序来帮助我…… 像这样:
然后你就从
你可以做一些更复杂的事情;
请注意,上面没有看到编译器… |
3
5
不能单独覆盖它们,必须同时覆盖这两个:
可以使用中间基类模拟单个重写:
此外,您错误地使用了reinterpret_cast,您应该具有:
这里有一个重写 CRTP 这可能是你想要的(或不是):
但请注意,现在不能在realclass上调用名称(使用虚拟调度,例如
|
4
3
|
5
1
还有两个相关问题几乎(但不是完全)相同: Picking from inherited shared method names . 如果要让rc.name()调用ic1->name()。 或 IC2->名称()。 Overriding shared method names from (templated) base classes .它的语法和代码比您接受的解决方案简单,但是 没有 允许从派生类访问函数。或多或少,除非您需要能够从RC调用name_i1(),否则不需要使用InterfaceHelper之类的东西。 |
Silverspur · “X是Y的模糊基”:多重继承噩梦 7 年前 |
Aedoro · 扩展多个类的C++函数参数 7 年前 |
user6022430 · Python3.4多重继承调用特定构造函数 8 年前 |
Mark van der Wilk · 用于重写继承方法的Mixin 8 年前 |
pasha · 是否可以为复制基的虚拟函数提供不同的定义? 8 年前 |
Daniel · 如何使继承从父类到子类python34起作用 9 年前 |