问题标签 [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# - 当返回类型显式时,在返回不同类型的方法之间调用不明确
可能重复:
关于 C# 中模糊调用的问题
我有这两种方法:
以下调用给了我“方法之间的歧义”错误:
当我要求一个TypeA
对象显式返回而不是通过var
或以其他方式返回时,这是如何发生的?
TypeA
并且TypeB
是单独的类,它们没有任何共同点。
scala - 对具有继承内部类 scala 的重载定义的模糊引用
所以这是有问题的代码:
编译器说,dynamics
在两者中都World
匹配GridWorld
签名。但是, inWorld
它是抽象的,然后在 中实现GridWorld
,所以在我看来,很明显我在调用GridWorld.this.dynamics
.
我注意到的另一件事是,如果我删除extends super.State
in SimpleGridWorld
,一切正常(我不明白为什么,我确实需要GridWorld.State
这里定义的功能)。有什么解释吗?谢谢!
更新
无论如何我看到我的设计模式很奇怪,因为如果State
inSimpleGridWorld
不继承GridWorld.this.State
,dynamics
将引用根特征中定义的未实现的模式World
(这是有道理的,因为实现 inGridWorld
可能使用GridWorld.this.State
其中可能不存在的功能SimpleGridWorld.this.State
)。但我想要的是:
XXXWorld.this.State
必须继承它super.State
(或只是使用它)dynamics
除非在此处被覆盖,否则总是指super.dynamics
是否在超级特征/类中实现。
我怎样才能做到这一点?我认为这不是一个完全不相关的问题,可能前一个问题的答案会告诉我如何重新设计我的模式。
java - 在 Java 7 上运行的 Eclipse Indigo 不会显示对方法的模棱两可的引用
我有一个曾经在 Java 1.5 上运行的应用程序。它编译并运行良好。最近,我决定迁移到 Java 1.7。
当我用 Maven 编译代码时(我在 pom.xml 中更新了 Java 版本),它显示了几个编译错误,说 somes 对某些方法的引用是模棱两可的,这是真的。但是,在 Eclipse 上,这些错误没有显示(我也将 Eclipse 的编译器更新到 1.7)。
我的一个朋友试图在 Eclipse Juno 上做同样的事情并且错误正在显示。
任何想法如何解决这个问题?
谢谢
c++ - ISO C++ 说这些是模棱两可的,
我必须重载移位运算符“<<”,以便在控制台中写入和在二进制文件中写入..
我在 ostream 重载方面做得很好,而我在重载 fstream 时遇到了一些问题,这里是:
在我的标题中:
在我的 cpp 文件中:
这是我面临的错误:
在函数 `std::fstream& operator<<(std::fstream&, const Fotografia&)' 中:
到目前为止,我所理解的是,我刚刚创建的重载函数和标准 fstream << 之间存在歧义。现在,我不明白为什么,因为我的重载函数应该只适用于“Fotografia”类(由我创建),而我正在尝试编写 char * 。
我想我可以通过使用“::”范围调用 fstream 运算符来解决这个问题,但我不确定。
有人可以帮我吗?:)
编辑:
我正在发布标题的代码和构造函数的代码
这是在cpp中:
c# - 为什么我在 vb 中得到一个模棱两可的调用,但在 c# 中却没有?
我在 c# 中有一个具有以下方法的类:
我不得不添加一个新的可选参数。为了保持向后兼容性,我添加了几个方法,每个方法多了一个参数,并且我重写了以前的方法来调用新的方法:
这似乎在 c# 中有效,尽管我知道仅使用 null 调用 MyMethod 将是模棱两可的(它可能是最后一个清单中的两个第一个方法中的任何一个)。
但是,当尝试从 Visual Basic 调用 MyMethod 时,它不会在智能感知中列出。如果我手动编写它,我会收到一个错误:“Ambiguous call”。
为什么会这样?
c++ - 显然模棱两可的调用不会导致 GCC 上的编译错误
令我惊讶的是,GCC 不认为foo()
以下程序中的调用不明确:
上面的函数调用true
在 GCC 4.7.2 和 GCC 4.8.0(beta)上编译并返回,而在 Clang 3.2 和 ICC 13.0.1 上它不会编译(如我所料)。
这是“不需要诊断”的情况,还是 GCC 中的错误?鼓励参考 C++11 标准。
c++ - 解决依赖于参数的查找歧义的非侵入式方法
这是我的情况:
我正在尝试使用具有 typeFoo::a
并指定 a的库Foo::swap
。我正在使用的另一个库有一个std::vector<Foo::a>
实例化。我正在尝试使用 Visual Studio 11.0 在 Windows 上编译它,并注意到std::vector::swap
映射到_Swap_adl
它执行不合格的交换调用。
这就是让我陷入 ADL 和模棱两可的功能解决方案的问题。是否有一些魔法可以让我使用Foo::swap
(甚至std::swap
:)),而无需对我正在使用的库进行一些“重大”更改(缺少从 Foo 删除/重命名交换等的东西)?
编辑:添加一个最小的例子来捕捉正在发生的事情和错误。
我不会评论代码的效率,因为它只是我必须使用的东西,但@http: //pastebin.com/Ztea46aC上的错误日志可以很好地了解内部发生的情况。这是编译器特定的问题,还是可以从这段代码中获得更深入的学习?
编辑2:我已经尝试专门针对有问题的特定类型,但这并不能解决歧义。关于为什么会这样的任何指示也会有所帮助。
http://pastebin.com/sMGDZQBZ是这次尝试的错误日志。
ambiguity - JavaCC 歧义:如何告诉解析器从“较长匹配”列表中选择某个匹配?
对于某些输入,解析器会显示“可能的较长匹配类型:{ <EXPRESSION>, <TEXT> } ”,但由于某些奇怪的原因,它选择了错误的。
这是来源:
如果我们尝试使用这个语法解析“a.bc.d”,它会说“FOUND A <EXPRESSION> MATCH (a.bc.d)”
我的问题是为什么它选择将输入解析为<EXPRESSION> 而不是 <TEXT>?
另外,如何强制解析器选择正确的路径?我尝试了无数的 LOOKAHEAD 场景,但都没有成功。
例如,当使用 "a.bc.d"作为输入时,正确的路径是 <TEXT>,而对于" { a.bc.d } " 则使用<EXPRESSION>。
提前致谢。
c++ - 为什么这些重载不是模棱两可的?
下面的代码用 gcc 和 clang 编译得很好。
看起来重载解决方案正在选择第一个重载(那个identity<T>::type
)。
有人可以解释为什么重载不是模棱两可的吗?据我所知,它们之间的唯一区别是第一个参数是非推导上下文,而第二个参数不是,但是由于我明确提供了模板参数,所以我不不明白为什么这很重要。