当前位置: 首页 > 知识库问答 >
问题:

使用using-directive进行不明确的名称查找

东方森
2023-03-14
namespace A {}
class A{};
namespace N { namespace A {int i;} }

struct A {static int i;};

using namespace N;

int i = A::i; // The global struct, or namespace N::A?
main.cpp:7:9: error: reference to 'A' is ambiguous
int i = A::i;
        ^
main.cpp:3:8: note: candidate found by name lookup is 'A'
struct A {static int i;};
       ^
main.cpp:1:25: note: candidate found by name lookup is 'N::A'
namespace N { namespace A {int i;} }
                        ^

然而,海合会接受它。

谁是对的?

共有1个答案

谭建章
2023-03-14

代码格式不正确。在查找A时,§7.3.4/6步:

如果名称查找在两个不同的名称空间中找到名称的声明,而这些声明没有声明相同的实体,也没有声明函数,则名称的使用格式不正确。

这里,名称空间是全局名称空间和N,实体是名称空间N::A和类:A

 类似资料:
  • 我和jee和wildfly一起工作了几天,现在我有问题了。我创建了这样的东西: 接下来,我尝试在jsf中使用,但遇到了异常: 2017-05-23 08:49:07,447]工件EAR:EAR:工件部署过程中出错。有关详细信息,请参阅服务器日志。 > 带有限定符[@default@named@any]的生产者方法[List]声明为[[BackedAnnotatedMethod]@produces@

  • 问题内容: 我正在从API检索JSON。我正在使用newtonsoft(这是json.net吗?)将其反序列化为对象列表。有用。 不幸的是,我还需要将此作为JSON传递给其他人(只有我有权访问它们,他们才能直接调用API)。不幸的是,我说这是因为我需要输出与接收到的JSON不同的JSON(属性名称必须不同)。 例如,我有一个名为Person的类,具有一个名为Name的属性。我想获取“人物”,因此我

  • 问题内容: 我有一个应用程序,它具有多个模块和各种依赖性。在Glassfish 4上部署应用程序时,出现错误: 可能是什么原因?我已经看到了有关此主题,解决方案是编辑注释,但这不是我的,而是依赖项。如何避免这种异常? 我正在将Java EE 6与JDK 1.7和Glassfish 4.0一起使用。 问题答案: Glassfish已经为您打包了Jerseys库,因此您需要按照docs所述在Maven

  • 问题内容: 有什么办法可以做这样的事情: ? 问题答案: 如果您的表中有一个名为的列,并且您想从该表中包含该行的值为‘1’的行中检索行,那么该查询就可以解决问题。 我怀疑您要执行的操作是使用别名在选择列表中引用一个表达式。那是不被支持的。WHERE子句中引用列的表达式必须按名称引用该列。 我们可以使用内联视图玩一些技巧,为表达式赋予别名,但这在WHERE谓词方面效率不高,因为MySQL实现了派生表

  • 问题内容: 在Windows上,我想找到名称为’exename.exe’的进程,然后将其杀死。 我该如何通过ctypes而不是其他任何第三方模块来做到这一点? 问题答案: 尝试这个: