1
3
我现在有了一段真正完整的代码来演示这个问题。OP注意:请在发布代码之前尝试编译代码。为了走到这一步,我必须做很多事情。让别人尽可能容易地帮助你是件好事。我还删除了一些无关的部分。OtherFoo在这里并不重要,FooBase也不重要。
是的,这不可编译。你到底期望它做什么?请记住,重载解析是在以下时间执行的:
编译时
,而不是执行时间。正如fallen888所说,您可以强制转换并调用适当的重载方法,但是您希望编译器选择两个重载中的哪一个?你想让它做什么
这一切都证明了.NET泛型确实与C++模板有很大的不同,当然… |
2
2
我还没有尝试过,但似乎你应该能够通过做A&实现你想要的;B可访问(例如,使用非循环访问者模式)。 |
3
1
这适用于静态情况。处理实例函数会有点复杂。这 post from Jon Skeet 可能提供一种合理的方法来处理实例方法。
|
4
0
编辑:我不确定您是否可以在尝试时完成此操作。我已经尝试了各种各样的技巧,试图让它工作,但无法让它编译。我能做的最好的事情就是将方法调用拉到泛型类之外。如果您的方法调用在外部,那么您可以具体定义泛型中的T。但是,在方法内部,在编译时,编译器不知道t是什么,因此不知道调用哪个重载方法。我能看到的唯一方法是使用开关来确定T的类型,并手动指定要调用的重载。
并且得到了输出:
我有四个重载函数引用了两个引用泛型类(一个用于int,一个用于string)和两个引用常规类型(一个用于int,一个用于string),所有这些都可以正常工作。。。这就是你想要的吗?
|
5
0
我希望找到一种更简单的方法来实现这一点,但现在我要做的是:
代替
并将实例化更改为
这至少不需要在中重复应用代码
|
Deconimus · C++模板方法重载和多态性类访问 6 年前 |
Vincent · 一种类型特征,标识哪个类提供重载解析选择的函数 6 年前 |
Lingxi · C中的默认参数vs重载++ 6 年前 |
Slime recipe · 多目标框架导致CS1503 6 年前 |
Dick Lucas Carl · 函数重载的替代方法 6 年前 |
Ali · Typescript rest参数具有两种可能的数组类型 6 年前 |