问题标签 [ambiguous-call]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何解决这样的函数重载引起的歧义?
我有一段类似的代码:
我想同时拥有函数的重载,foo
因为foo(T&)
它更有效,但我不能使用文字常量作为它的参数,并且foo(T)
将适用于文字常量,尽管它不如foo(T&)
. 但是当我定义这两个函数时,将会有一个模棱两可的调用何时c.foo(a)
执行。
错误:重载 'foo(int&)' 的调用不明确
我该如何克服这个问题?
c++ - 编译器从 `int` 转换时,`long` 和 `double` 相同
我正在研究c++中的函数重载,我在程序中看到了一个模棱两可的情况,
书中给出的模棱两可的原因是,编译器可以转换int
inlong
或 in double
。所以编译器会产生错误。我运行它,结果是一样的,错误。
那么如何long
和double
是等价的?这里模棱两可的实际原因是什么?
casting - 当有不同的过载时强制向上转换
这根本与 Windows 窗体无关,它仅用于“背景”。
AddRange
当我在MenuStrip.Items
要求强制ToolStripMenuItem
转换时遇到错误时,我正在玩弄 Windows 窗体ToolStripItem
但我已经有一个AddRange
for aForm.Controls
之前不需要演员表。
经过一些实验,我设法发现当有多个重载时会发生错误,AddRange
所以我试图验证我的想法:
问题就是为什么;从我的角度来看,这个电话并不模棱两可
java - Java:重载构造函数之间的选择
根据这个问题,当尝试在模棱两可的重载构造函数之间进行选择时,Java 将选择“最具体”的选项。在这个例子中:
它会打印
“地图”
但是,我试图弄清楚“最具体”的确切含义。我认为它的意思是“最不模棱两可”,如“可能指的是最少可能的类型”。在这种情况下,Object
可能是任何不是原始的东西,而Map
可能只是Map
or ? extends Map
。基本上,我假设无论哪个类更接近继承树的叶子,都会被选中。当一个类是另一个类的子类时,这是有效的:
“乙”
然后我想出了这个:
我认为它应该 print E
,因为E
可能只指一种已知类型,而A
可能指两种(A
和B
)。但它给出了一个模棱两可的参考错误。
它实际上是如何选择构造函数的?我通读了文档,但坦率地说,我不太明白它是如何确定特异性的。我希望能准确描述为什么它不能确定E
比A
.
c++ - 模板参数不明确:无法推断模板参数
我正在做一些看起来像这样的包装器:
我收到了这个错误:
Apply
: 没有找到匹配的重载函数。void Apply(void (__thiscall T::* )(Value),T *,Value)
: 模板参数Value
不明确,可以是int
或const int &
.void Apply(void (__thiscall T::* )(Value),T *,Value)
: 无法推断Value
from 的模板参数const int
。
所以我知道它来自模板参数推导,但是我不明白如何。为什么Value
不评估const int&
两次?
c# - 具有不同 HttpMethod 的模棱两可的动作方法
至少对我来说,我正在经历一种奇怪的行为。我在具有明显不同签名的控制器中编写了两种方法:
问题是每次我尝试使用 Ajax.BeginForm 调用 POST 方法时,都会调用 GET 方法(第一个)。
现在,为什么会这样?当然,如果我将 GET 方法的名称更改为 AddTransaction,则代码可以正常工作,但我想了解它为什么不能正常工作。
c# - 为什么以下调用不明确?
以下调用将失败,因为编译器需要 method SetAll(PropertyInfo, int)
。
所以这意味着编译器不能以任何方式使用这个重载。它不能int
转换为object
.
考虑到这一点,为什么下面的调用是模棱两可的?
如果编译器不能以任何方式对对象使用重载,那么为什么它在这里挣扎?
这是我拥有的实际代码。我可以轻松解决这个问题,但我只是好奇。
c++ - 模棱两可的方法编译错误
我有以下代码涉及三个类 A,B,C 我该如何避免呢?
python-3.x - 给定有关数组中不明确的真值的错误消息,如何调试此代码(片段)?
下面显示的第一个代码块有效;我的问题是试图使该代码块适应我的问题(在其下方定义)。
我正在尝试使用 SCIPY 来最小化下面的功能chisq
。整个代码基本上是一个函数链(比如expectperbin
,调用一个分布函数来整合过来);下面的代码有obsperbin
、parameterguess
、countperbin
和 初始参数,所有这些都是预定义的。仅显示函数链的顶部:
mu
上面的代码找到最小化和的优化值sigma
(给定每个初始猜测)chisq
,并且它按预期工作。所以我现在试图概括定义多个分布的情况下的代码。我使用不可更改的函数输入pickdist
来选择要计算的预定义分布expectperbin
。我的尝试如下:
运行该代码会创建错误消息
并在读取的代码行obsperbin = countperbin ...
(从上,下chisq
)和从下面读取的代码行中找到错误if pickdist == 1:
在阅读SO 上的这篇文章后,我尝试调试此代码,但没有成功。如何将错误消息告诉我的内容应用于我的函数?
c++ - 为 std::vector 消除歧义列表初始化
我的代码中有一个带有类型签名的重载函数:
我希望 foo 的用户能够使用字符串或字符串列表调用它
问题是当调用者将两个字符串传入 foo 的初始化列表时。
这个对 foo 的调用是模棱两可的,因为它匹配两个类型签名。这是因为显然{"str1","str2"}
是一个有效的构造函数std::string
所以我的问题是,我可以在 foo 的声明或实现中做些什么,这样我就可以维护上面描述的 API,而不会遇到这种模棱两可的构造函数案例。
我不想定义自己的字符串类,但我可以定义其他东西,而不是vector<string>
只要它可以用字符串的初始化列表进行初始化。
只是出于好奇,为什么字符串构造函数接受{"str1","str2"}
?