问题标签 [qualified-name]

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

java - 如何解析限定名称表达式中的字段

这是我的“类型”Xtext 语法:

这是“类型”语法的一个实例:

引用字段“n”和“s”的最后六行会生成错误:

无法解析对字段“x”的引用。

我编写了以下自定义范围提供程序但没有成功:

0 投票
1 回答
104 浏览

c++ - 使用范围解析运算符时在构造函数中调用虚方法是否安全?

我有一个类层次结构,其中每个类都有一个compute会触发一些(重新)计算的方法。这个方法是一个虚拟方法(它在基类中是纯虚拟的)。在某些情况下,我想从构造函数中调用此方法来立即设置我的实例。

当然,这可能很危险。Eclipse CDT 代码分析发出错误“在构造函数中调用虚拟方法可能导致崩溃和意外行为”。我了解错误信息及其原因。请,请不要告诉我为什么要避免这种情况!!!

为了使错误消息和(更重要的)错误的可能性消失,我引入了一个范围解析运算符。所以构造函数现在看起来像这样:

我希望那是绝对安全的。但是 Eclipse 代码分析继续显示错误消息。为什么?不可能调用意外的方法。如果该方法是纯虚拟 in MyClass,编译器会告诉我。

这是 Eclipse 代码分析错误还是我遗漏了什么?

编辑:范围解析运算符应该抑制虚拟解析。因此,我希望它可以防止警告中提到的所有可能的错误。我的假设是真的吗?

0 投票
3 回答
471 浏览

c++ - 离线成员函数定义是否需要完全限定的类名到全局范围?

这个问题让我想知道在类外成员函数定义中完全限定类名(包括全局范围运算符)是否有用/有必要。

一方面,我以前从未见过这样做(而且正确执行此操作的语法似乎晦涩难懂)。另一方面,C++ 名称查找非常重要,因此可能存在极端情况。

问题:

是否存在引入类外成员函数定义
ReturnType (::Fully::Qualified::Class::Name::MemberFunctionName)(...) { ... }
不同于
ReturnType Fully::Qualified::Class::Name::MemberFunctionName(...) { ... }(无全局范围::前缀)的情况?

请注意,成员函数定义必须放在包含类的命名空间中,因此不是一个有效的示例。

0 投票
2 回答
261 浏览

c++ - Derived1::Base 和 Derived2::Base 是指同一个类型吗?

MSVC、Clang 和 GCC 对此代码存在分歧:

神螺栓

海合会:

Clang 给出了类似的错误,而 MSVC 没有给出错误。

谁在这里?

我想这在[class.member.lookup]中有所涉及,但我很难理解它试图告诉我这个案例的内容。请引用相关部分,并尽可能用简单的英语解释。

PS:受这个问题的启发,为什么对基类的引用与 :: -operator 槽派生类不明确?

PPS:实际上我的疑问是Der1::Base指的是类型,那将是Base(然后Der2::Base是完全相同的类型),或者是子对象。我确信它是第一个,但如果是后者,那么 MSVC 将是正确的。

0 投票
0 回答
50 浏览

c++ - 当我包含向量时,为什么 std::begin 可以无条件地访问?

我认为我总是需要 的std::资格std::something,除非我是using std::something或整体namespace std,但似乎这#include <vector>使得,例如,std::begin可用begin

为什么会这样?

0 投票
1 回答
80 浏览

android - Android:我怎样才能猜出正确的合格应用名称来启动某些程序?

我认为提出这个问题的最佳方式是通过示例,所以我将使用特定的应用程序。

AndroidWebKey应用程序有一个启动时启动的选项,我更喜欢保持禁用状态。但我想通过远程 SSH控制台手动启动这个程序。

我的尝试是这个命令(可以看出,失败):

看来我指的不是正确的类。这就是我找到该课程的方式:

实际上,我什至不知道如何获得正确的类来启动一个知道其合格应用程序名称的程序。

我不知道问题是否出在 ADB 配置中:

有人可以给我任何想法来手动启动正确的程序吗?

补充说明:

  • 所有 shell 测试都以root ( su) 身份执行。
  • 该设备已植根。也欢迎回答非根设备。

新测试:

TeamViewer Host相同的示例:

但它没有启动,也没有:

0 投票
3 回答
217 浏览

c++ - 使用 g++ 编译时出现不完整类型错误

我正在尝试使用 g++ 执行以下代码并收到不完整的类型错误

错误:

上面的代码已成功使用 gcc 编译

此错误的原因是什么以及如何解决此错误

谢谢

0 投票
1 回答
289 浏览

python - 如何将特定模块的 `add_module_names` 更改为 `False`?

如何更改add_module_names特定False模块?

我有以下结构:

我希望模块中的所有函数文档都.. autofunction::隐藏 _foo模块的名称,而 bar 模块的所有函数都显示名称。

我有没有办法按模块执行此配置,甚至为每个功能单独执行此配置?

0 投票
1 回答
39 浏览

c++ - 查找从属限定名

该程序不编译 ( error: 'foo' is not a member of 'N'):

但是如果我们取消注释 的声明void foo();,它就会编译。演示

两个版本都有错误。foo即使声明,也不接受任何参数。以下问题自提出。

  • 为什么一个版本可以编译,而另一个版本不行?
  • C++ 标准中是否有这样的规则?“如果编译器能够证明没有任何实例是格式正确的,它可以(但不是必须)在没有实例的情况下诊断错误。”

我的理论如下(正确吗?)。里面template_func N::foo同时是一个限定名和一个从属名。依赖名称的查找被推迟到模板的实例化。查找名称(如果成功)会导致将该名称的使用与该名称的声明联系起来。但是这个过程包括两个步骤(我们现在只考虑限定名称,看起来像一个函数调用):

  1. 在限定符的范围内查找名称(在此示例中,这意味着 namespace N)。这可能会找到多个名称,因为函数可以重载。
  2. 检查参数是否可以传递给找到的名称。这包括找到一个最佳匹配,如果有多个fooN. 这种方式的使用与N::foo声明相关联N::foo

实际上第一步可以在没有实例化的情况下完成。编译器似乎会这样做,如果没有foo找到,它会诊断错误(这是可选的)。如果至少foo找到一个,它不会打扰进一步的分析。

0 投票
1 回答
71 浏览

c++ - 在嵌套名称说明符中使用 decltype

考虑以下演示程序。

该程序使用 gcc 8.3 成功编译,例如www.ideone.com

但是,如果使用 MS VS 2019 运行此程序,则编译器会发出decltype( N::A )与嵌套名称说明符中的记录相关的错误。如果要删除前面的名称N::,则程序编译成功。

是 MS VS 编译器的错误还是嵌套名称说明符写错了?