问题标签 [name-clash]

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 回答
337 浏览

c++ - 名称与类方法冲突

所以我有一个定义如下的类:

然后我这样实现 close() 方法:

我的关闭中的“关闭(mHandle)”是在和AFAIK中定义的,它不在任何命名空间中。

为了解决方法,我将我的 close 重命名为其他东西,但必须有其他方法......

0 投票
2 回答
3283 浏览

java - Java 名称冲突错误,尽管方法签名不同

为了好玩,我正在尝试实现一个“MultiMap”集合,就像 Apache Commons 库中已经存在的那样。我的“remove(K key, V value)”方法遇到了一个有趣的错误。编译器说存在名称冲突 - 它与“类型 Map 的删除(对象,对象)”具有相同的擦除。但是java.util.Map接口中没有定义这样的方法!只有一个“删除(对象)”方法 - 一个参数,而不是我的两个参数版本。更有趣的是,如果您通过将我的“remove(K key, V value)”替换为“remove(Object key, Object value)”来手动删除类型信息,它编译得很好。谁能解释这种现象?

我正在运行 Java 8,以防万一。

0 投票
9 回答
4803 浏览

java - Java名称隐藏:艰难的方式

我有一个非常难以解决的名称隐藏问题。这是解释问题的简化版本:

有一个类:org.A

然后有一堂课net.foo.X

现在,这是继承自A并想要调用的有问题的类net.foo.X.doSomething()

如您所见,这是不可能的。我不能使用简单名称X,因为它被继承的类型隐藏。我不能使用完全限定名称net.foo.X,因为net它被继承的字段隐藏。

只有类B在我的代码库中;类net.foo.Xorg.A是库类,所以我不能改变它们!

我唯一的解决方案是这样的:我可以调用另一个类,然后调用X.doSomething(); 但是这个类只会因为名字冲突而存在,看起来很乱!有没有我可以直接调用X.doSomething()的解决方案B.doSomething()

在允许指定全局命名空间的语言中,例如,global::在 C# 或::C++ 中,我可以简单地net使用这个全局前缀作为前缀,但 Java 不允许这样做。

0 投票
1 回答
972 浏览

swift - Swift 中的命名空间

我正在编写一个扩展来String返回它的反转版本:

代码工作正常,但我想调用这个方法reverse,而不是rev。如果我这样做,我会收到一个错误,因为方法名称与通用函数冲突reverse

有没有办法指定我的意思是reverse方法体内的泛型函数?

0 投票
1 回答
2483 浏览

java - 覆盖泛型类的方法时的名称冲突

我试图理解使用以下代码得到的名称冲突错误:

错误信息:

错误:名称冲突:doSomething(Number,Map<String,JComponent>)inBardoSomething(Number,Map<String,JComponent>)inFoo具有相同的擦除,但都不会覆盖另一个

我知道我可以通过从 中删除泛型类型Foo或将Bar声明更改为class Bar extends Foo<Integer>;来修复它。我想知道的是为什么在特定情况下会发生此错误,但是如果我comps从每个方法中删除参数就会消失。我已经阅读了有关类型擦除的一些内容,但在我看来,无论是否使用泛型,这两种方法都应该具有相同的擦除,因此在任何一种情况下都是有效的覆盖。(请注意,我什至还没有在任何地方使用过泛型参数,这就是我如此惊讶的原因。)

我知道我之前已经向父类添加了泛型类型,但只收到关于子类的警告,而不是错误。谁能解释这种情况?

0 投票
2 回答
1783 浏览

c++ - 成员函数与类名冲突

我正在用 wxWidgets 编写一个国际象棋程序。有一次,我有一个 的子类wxGLCanvas,它使用了Move我写的一个类。不幸的是,似乎有一个方法wxWindowBase::Move(),所以我所有的表单语句list<Move> li都不会编译。

有什么好的方法可以解决这个问题吗?我已经尝试过list< ::Move> li,这确实解决了问题,但它很糟糕,我必须在任何地方进行更改。与命名空间冲突不同,使用声明在这里似乎没有帮助。

0 投票
2 回答
66 浏览

c - 我是否以错误的方式使用了预处理器?

请注意:这不是家庭作业。该程序不完整且功能不完整,但至少应该可以编译。

我正在使用 C Primer Plus Book 进行自学过程(简而言之,我是 C 新手)。我几乎已经读完了整本书,并且一直在完成每一章的练习,有时我会偏离正题。这是其中之一。我遇到了一个特殊的问题,我很确定与预处理器指令有关。

我正在使用 MinGW(Windows 的 gcc),它报告:

gcc 报告的错误是:

nanfunct.c: 'keywords' 的多重定义
nanite.c: 首先在这里定义
等等...等等...更多错误...

我很确定这是由包含多个头文件引起的,但更重要的是我创建然后包含的头文件导致了这个问题。

这个问题似乎与指向字符数组(或基于字符串的数组)的指针有关,它们在编译时重复,即使我说只有在尚未预定义的情况下才定义它。

例如:

我正在使用三个文件:

nanite.c -> main()
nanfunct.c 的源文件 -> 函数
nanproto.h 的源文件 -> nanite.c 和 nanfunct.c 的头文件

nanite.cnanfunct.c#include nanproto.h

pastebin 上发布的源文件:
nanproto.h -> nanite.cnanfunct.c的头文件nanite.cnanfunct.c -> 源文件

为什么会这样?我认为#ifndef应该防止这样的事情发生?

0 投票
1 回答
278 浏览

clojure - 一起使用 Incanter 和 Clojure Soup

我正在学习 Clojure - 这很有趣!我正在尝试在同一个文件中使用 Incanter 和 Clojure Soup:

我收到以下错误:

我想我明白为什么,但我该如何解决这个问题?欣赏这个网站和上面的所有大师!

谢谢。

0 投票
2 回答
982 浏览

python - Django 项目中的相同型号名称

我有一个包含两个应用程序的项目:

  • 帐户,
  • 类。

在帐户应用程序中,我使用 Django 的 Group 模型(用于帐户权限),而在 classes 应用程序中,我有另一个名为 Group 的模型(但它应该被解释为一组学生)。

我的 url.py 看起来像:

但它没有按预期工作。/api 页面如下所示:

因此,两者都针对相同的地址,这不是我想要的。管理页面运行良好(我可以编辑帐户的组和班级的组)。

有什么建议么?

编辑:

如下更改 url.py 的行之一(如以下答案之一所示):

将 /api 页面更改为:

所以@argaen 解决方案通常不是这种情况的解决方案。

0 投票
1 回答
1157 浏览

java - 名称冲突,即使我没有同时使用这两个接口

我收到这条烦人的消息:

错误:(8、8)java:名称冲突:org.springframework.data.repository.CrudRepository 中的保存(java.lang.Iterable)和 org.springframework.data.jpa.repository 中的保存(java.lang.Iterable)。 JpaRepository 具有相同的擦除,但都不会覆盖另一个

我没有CrudRepository在我的代码中使用,所以我怎么会收到这个奇怪的消息?我该如何解决?