问题标签 [name-hiding]

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

c++ - 结构声明被变量隐藏时的名称解析

让我们考虑以下演示程序。

正如所见,struct B结构中成员的声明被类型A为 的数据成员的声明所隐藏。Bint

所以在模板结构声明的函数定义中

T::B不应该找到依赖的名称。

但是编译器gcc 8.3成功编译程序并且程序输出

另一方面,编译器Visual C++ 2019不会编译程序并发出语法错误。

那么它是编译器gcc 8.3的错误吗?

第二个问题是,如果允许这种带有详细类型说明符的构造(带有未注释的关键字结构)是很自然的。

但是,两个编译器都认为该构造不正确。

确实不正确吗?

0 投票
1 回答
45 浏览

c++ - 为什么默认隐藏模板基类的公共成员类型?

为什么默认隐藏模板基类的公共成员类型?

0 投票
1 回答
53 浏览

c++ - c ++如果在一个类中将多个运算符定义为虚拟,孩子是否需要全部覆盖它们才能编译?

我有以下课程,

上面的代码片段给出了编译时错误,模棱两可的重载。但如果我把virtual void operator()(int a) {}它作为一个正常的功能,它就可以工作,

这是否意味着在基类中有多个虚拟运算符的情况下,我需要覆盖所有这些?

0 投票
1 回答
32 浏览

gcc - 继承的可变参数模板中基本成员的名称隐藏

我有以下适用于 VS2017 的代码:

它以这种方式使用:

问题在于使用 Composite<Args...>::foo的行,因为它不在 c++ 标准中。这就是为什么它不适用于 gcc:Composite<Args...> 不是 Composite 的基类。

我不得不使用这条线,因为 Composite 隐藏了 A 的 foo。

我如何才能拉入单个打包参数的范围?

谢谢。

0 投票
1 回答
75 浏览

c++ - 函数参数中的 C++ 枚举关键字

enum在函数参数中使用关键字有什么意义?没有它,它似乎做同样的事情。

两者有区别吗?