问题标签 [scope-resolution]

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 投票
5 回答
1038 浏览

c++ - 私有派生析构函数

当我试图以多态方式删除派生对象(即:基类具有公共虚拟析构函数)时,为什么仍在调用派生类私有析构函数?为什么私有范围解析在这里不起作用。

输出:

0 投票
1 回答
355 浏览

c++ - 我们什么时候在 new (::new) 之前使用范围解析运算符?

我遇到了一个代码,其中范围解析运算符放在new之前。我们什么时候使用它。它的含义是什么。请问有人可以解释吗?

0 投票
0 回答
472 浏览

c++ - 当成员函数在其类定义之外定义时,范围解析运算符是否可以在成员函数的定义中使用?

当成员函数在其类定义之外定义时,范围解析运算符是否可以在成员函数的定义中使用?像这样:

我的老师给了我们一些笔记,演示了仅对公开的成员函数使用范围解析运算符。任何人都可以清除这个吗?

0 投票
2 回答
10714 浏览

c++ - C++ 语法“A::B:A {};”是什么意思?意思是

C++ 语法struct A::B:A {};是什么意思?C++ 标准中描述的名称定义(或访问)在哪里?

0 投票
1 回答
80 浏览

c++ - 如何在 C++ 中访问函数范围变量?

可以使用 :: 运算符在函数内访问全局范围的变量。由于全局范围没有名称,因此 :: 的左侧可能为空。我将如何访问在函数范围中定义的变量,该变量稍后在函数本身的块中被覆盖。在下面的代码中,我将如何访问初始化为 1 的变量?

0 投票
4 回答
176 浏览

c++ - 如何在 C++ 中访问没有范围解析运算符的标头成员类型?

我正在学习 C++,这可能是一个愚蠢的问题。

我想为通用类型定义创建一个类,并通过 inluding 在许多 cpp 文件中使用它。标题是“CommonTypesCls.h”:

我想像这样在 source.cpp 中使用这些属性:

是否可以在没有范围解析的情况下使用包含类的成员类型?

0 投票
3 回答
150 浏览

c++ - 为什么`::`不像操作符那样被称为“范围解析操作符”?

我想不出使用::指定范围会导致生成任何代码的情况。我能想到的每个其他运算符实际上(至少在概念上)都会生成代码,它“做某事”。

那么,当它的行为与 operator 完全不同时,为什么将其::称为“范围解析运算符” 。在我看来,它更像是名称的一部分,有点像或围绕模板参数列表的词汇绒毛,甚至. 没有人称“表达式终止运算符”。...<>;;

是否有特定的原因被称为(标准中关于它如何以某种方式表现得像这里的操作员一样的引用)?或者这个名字只是历史包袱?

0 投票
0 回答
208 浏览

c++ - 显式调用 typedef'd 类类型的析构函数的正式正确方法

这个问题与:C++: Explicitly call destructor of template parameter's typedef有关:

我有以下内容:

后来,我通过placement new获得了一个ptr类型的变量A::Ptr *,基本上是通过调用这样的函数:

我现在想通过显式的析构函数调用撤消placement-new。我这样做:

正如对链接问题的答案的评论中所说,这适用于 gcc,但不适用于 clang。§ 12.4p13 标准说

在显式析构函数调用中,析构函数名称显示为 ~ 后跟表示析构函数的类类型的类型名称decltype 说明符。

但我不确定这如何与 typedef 和范围解析相互作用。所以,我的问题是:

  1. 在上述情况下显式调用析构函数的符合 C++-11 标准的方法是什么(理想情况下不透露 的类型Ptr)?
  2. 1 的答案在 gcc 和/或 clang 中有效吗?如果没有,普遍接受的解决方法是什么?
0 投票
1 回答
337 浏览

java - 无法使用 :: 运算符将新列表初始化为地图的值?

在从事纸牌游戏项目时,我试图创建一个新地图,同时已经有一个我想用作 KeySet 的列表。地图必须使用 Player 类型的键,并且每个键都包含一个由单个 组成的值List<Trick>,其中 Player 是一个接口,而 Trick 是一个类。

最初,我尝试使用List<Player> players我拥有的 Stream,然后通过以下方式将其收集到 Map:

但是,我的 IDE IntelliJ 不允许我使用这种格式,因为它说“无法解析构造函数 ArrayList”。

令我惊讶的是,当我删除::-Operator 时,IDE 不再抱怨:

虽然我现在确实有没有异常的代码,但我仍然不明白为什么 Scope Resolution Operator 会产生这样的错误。如果有人能正确解释,我将不胜感激。

PS 在寻找解决方案时,我发现了这个 StackOverflow 线程:

将新对象存储为哈希图的值?

它确实涉及类似的问题,但并没有真正解决我面临的问题。

0 投票
7 回答
421 浏览

c++ - C ++中“::delete”的目的是什么?

我目前正在查看::delete用于删除指针的 C++ 代码。

一个毫无意义的例子是:

以这种方式使用 delete 关键字的目的是什么?