|
|
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之类的东西。 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 9 月前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 10 月前 |
|
|
ikegami Gilles Quénot · 关节手术中常见的关节转换 11 月前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |