问题标签 [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.

0 投票
1 回答
344 浏览

c++ - 如何解决这样的函数重载引起的歧义?

我有一段类似的代码:

我想同时拥有函数的重载,foo因为foo(T&)它更有效,但我不能使用文字常量作为它的参数,并且foo(T)将适用于文字常量,尽管它不如foo(T&). 但是当我定义这两个函数时,将会有一个模棱两可的调用何时c.foo(a)执行。

错误:重载 'foo(int&)' 的调用不明确

我该如何克服这个问题?

0 投票
1 回答
85 浏览

c++ - 编译器从 `int` 转换时,`long` 和 `double` 相同

我正在研究c++中的函数重载,我在程序中看到了一个模棱两可的情况,

书中给出的模棱两可的原因是,编译器可以转换intinlong或 in double。所以编译器会产生错误。我运行它,结果是一样的,错误

那么如何longdouble等价的?这里模棱两可的实际原因是什么?

0 投票
1 回答
92 浏览

casting - 当有不同的过载时强制向上转换

这根本与 Windows 窗体无关,它仅用于“背景”。

AddRange当我在MenuStrip.Items要求强制ToolStripMenuItem转换时遇到错误时,我正在玩弄 Windows 窗体ToolStripItem

但我已经有一个AddRangefor aForm.Controls之前不需要演员表。

经过一些实验,我设法发现当有多个重载时会发生错误,AddRange所以我试图验证我的想法:

问题就是为什么;从我的角度来看,这个电话并不模棱两可

0 投票
3 回答
1312 浏览

java - Java:重载构造函数之间的选择

根据这个问题,当尝试在模棱两可的重载构造函数之间进行选择时,Java 将选择“最具体”的选项。在这个例子中:

它会打印

“地图”

但是,我试图弄清楚“最具体”的确切含义。我认为它的意思是“最不模棱两可”,如“可能指的是最少可能的类型”。在这种情况下,Object可能是任何不是原始的东西,而Map可能只是Mapor ? extends Map。基本上,我假设无论哪个类更接近继承树的叶子,都会被选中。当一个类是另一个类的子类时,这是有效的:

“乙”

然后我想出了这个:

我认为它应该 print E,因为E可能只指一种已知类型,而A可能指两种(AB)。但它给出了一个模棱两可的参考错误。

它实际上是如何选择构造函数的?我通读了文档,但坦率地说,我不太明白它是如何确定特异性的。我希望能准确描述为什么它不能确定EA.

0 投票
2 回答
1409 浏览

c++ - 模板参数不明确:无法推断模板参数

我正在做一些看起来像这样的包装器:

我收到了这个错误:

  • Apply: 没有找到匹配的重载函数。
  • void Apply(void (__thiscall T::* )(Value),T *,Value): 模板参数Value不明确,可以是intconst int &.
  • void Apply(void (__thiscall T::* )(Value),T *,Value): 无法推断Valuefrom 的模板参数const int

所以我知道它来自模板参数推导,但是我不明白如何。为什么Value 评估const int&两次?

0 投票
1 回答
1483 浏览

c# - 具有不同 HttpMethod 的模棱两可的动作方法

至少对我来说,我正在经历一种奇怪的行为。我在具有明显不同签名的控制器中编写了两种方法:

问题是每次我尝试使用 Ajax.BeginForm 调用 POST 方法时,都会调用 GET 方法(第一个)。

现在,为什么会这样?当然,如果我将 GET 方法的名称更改为 AddTransaction,则代码可以正常工作,但我想了解它为什么不能正常工作。

0 投票
2 回答
181 浏览

c# - 为什么以下调用不明确?

以下调用将失败,因为编译器需要 method SetAll(PropertyInfo, int)

所以这意味着编译器不能以任何方式使用这个重载。它不能int转换为object.

考虑到这一点,为什么下面的调用是模棱两可的?

如果编译器不能以任何方式对对象使用重载,那么为什么它在这里挣扎?


这是我拥有的实际代码。我可以轻松解决这个问题,但我只是好奇。

0 投票
2 回答
129 浏览

c++ - 模棱两可的方法编译错误

我有以下代码涉及三个类 A,B,C 我该如何避免呢?

 

 

 

0 投票
0 回答
59 浏览

python-3.x - 给定有关数组中不明确的真值的错误消息,如何调试此代码(片段)?

下面显示的第一个代码块有效;我的问题是试图使该代码块适应我的问题(在其下方定义)。

我正在尝试使用 SCIPY 来最小化下面的功能chisq。整个代码基本上是一个函数链(比如expectperbin,调用一个分布函数来整合过来);下面的代码有obsperbinparameterguesscountperbin和 初始参数,所有这些都是预定义的。仅显示函数链的顶部:

mu上面的代码找到最小化和的优化值sigma(给定每个初始猜测)chisq,并且它按预期工作。所以我现在试图概括定义多个分布的情况下的代码。我使用不可更改的函数输入pickdist来选择要计算的预定义分布expectperbin。我的尝试如下:

运行该代码会创建错误消息

并在读取的代码行obsperbin = countperbin ...(从上,下chisq)和从下面读取的代码行中找到错误if pickdist == 1:

在阅读SO 上的这篇文章后,我尝试调试此代码,但没有成功。如何将错误消息告诉我的内容应用于我的函数?

0 投票
2 回答
388 浏览

c++ - 为 std::vector 消除歧义列表初始化

我的代码中有一个带有类型签名的重载函数:

我希望 foo 的用户能够使用字符串或字符串列表调用它

问题是当调用者将两个字符串传入 foo 的初始化列表时。

这个对 foo 的调用是模棱两可的,因为它匹配两个类型签名。这是因为显然{"str1","str2"}是一个有效的构造函数std::string

所以我的问题是,我可以在 foo 的声明或实现中做些什么,这样我就可以维护上面描述的 API,而不会遇到这种模棱两可的构造函数案例。

我不想定义自己的字符串类,但我可以定义其他东西,而不是vector<string>只要它可以用字符串的初始化列表进行初始化。

只是出于好奇,为什么字符串构造函数接受{"str1","str2"}