嵌套类继承

发布于 2024-10-15 03:58:33 字数 1431 浏览 7 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晨曦慕雪 2024-10-22 03:58:33

C++03 [第 14.6/8 节] 说

查找模板定义中使用的名称声明时,通常的查找规则(3.4.1、3.4.2)用于非依赖名称。依赖于模板参数的名称查找被推迟,直到知道实际的模板参数为止 (14.6.2)。

第 14.6.2/3 节说

在类模板或类模板成员的定义中,如果类模板的基类依赖于模板参数,则在定义点的非限定名称查找期间不会检查基类范围类模板或成员的或者在类模板或成员的实例化期间。

pos 是一个非依赖名称,因此不检查基类。

所以你有两个选择。

  • 使用成员的完全限定名称,即 base::nestedClass::pos
  • 使用 this->pos

C++03 [Section 14.6/8] says

When looking for the declaration of a name used in a template definition, the usual lookup rules (3.4.1, 3.4.2) are used for nondependent names. The lookup of names dependent on the template parameters is postponed until the actual template argument is known (14.6.2).

Section 14.6.2/3 says

In the definition of a class template or a member of a class template, if a base class of the class template depends on a template-parameter, the base class scope is not examined during unqualified name lookup either at the point of definition of the class template or member or during an instantiation of the class template or member.

pos is an non dependent name so the base class is not examined.

So you have two options.

  • Use fully qualified name of Member i.e base<T>::nestedClass::pos
  • Use this->pos.
简单 2024-10-22 03:58:33

它必须显式引用为 base::nestedClass::pos [或使用 using 语句]

It has to be explicitly referenced as base::nestedClass::pos [or use a using statement]

岁月苍老的讽刺 2024-10-22 03:58:33

您没有将 pos 纳入范围。您可以使用 this->pos += 5;usingnestedclass::pos

You're not bringing pos into scope. You can either use this->pos += 5; or using nestedclass::pos.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文