![]() |
1
18
您不能这样做的原因是编译器必须选择在编译时使用哪个create重载-您的方法将要求在运行时完成它。你能做的最短的可能是:
|
![]() |
2
7
似乎每个人都在建议:
然而,这也是可行的:
后者更接近于你最初的尝试,在我看来,更紧凑。 |
![]() |
3
3
C编译器在编译期间选择静态执行的方法。编译时生成的IL是对特定方法的引用。多态性部分在运行时选择要执行的特定函数的实现时出现。 你的?:语句是在运行时计算的,因此编译器无法确定要执行的方法。 换成这个就行了。
|
![]() |
4
2
问题是,您无法在编译时确定
应该回来。它是字符串还是文本编写器?这只能在运行时确定,因此编译错误是因为?必须在编译时解析运算符。 最好的办法是:
|
![]() |
5
2
这里发生了一些事情。 首先,“异常”发生的原因是三元运算符(tm),而不是您使用它的位置。问题在于,您有一个表达式试图返回两个不同的类型,但无法解析为单个公共基类型(对象除外)。 此外,构造函数重载可能采用两种完全不同的类型,它们之间没有任何关系。C编译器非常, 非常 很聪明,但不是很聪明 那个 聪明。 |
![]() |
6
1
不,您必须进行两个单独的调用,因为它们是两个单独的构造函数。 要调用的重载是在编译时确定的,因此不能在运行时选择要调用不同重载的数据类型。 另外,条件运算符只能返回一个数据类型,不能让它根据选择返回不同的数据类型。 |
![]() |
7
1
C是静态类型化的,所有的多态魔术都发生在编译时。并且条件表达式的类型在编译时是未知的。 |
![]() |
Eris · 纯虚拟成员有什么优势吗(除了他们可能防止的人为错误)? 2 年前 |
|
James Nguyen · Java多态性:为什么返回错误? 7 年前 |
|
Alex Cristea · 如何从另一个类的数组中打印特定行 7 年前 |
![]() |
juztcode · C语言中的静态和动态分辨率++ 7 年前 |
![]() |
Hugo · 具有多态关系的活动记录获取关联模型 7 年前 |
![]() |
pooya13 · 机器代码层上虚函数和条件执行的区别 7 年前 |
![]() |
Nisba · C中子类类型未知的模型类/子类++ 7 年前 |
![]() |
R zu · 使用多次调用的可替换方法初始化 7 年前 |