如何解决将私有继承的 Base 类构造函数引入 Derived 的公共范围
Inheriting a constructor from a private template class in C++
解释说,通过 using Base::Base;
内的 Derived
,我们将 Base
中注入的类型 Base
作为 Base::Base
引入 Derived
的范围,而不是实际的 { {1}} 的 c-tor(s)。
我对 Base
和 whys
的兴趣比上面提到的问题更深入。
在下面的代码段中,有 3 个模板类 hows
,它们继承自 std::vector。我很好奇为什么 MyVector...
不足以使事情适用于 using Super::vector;
和 private
情况?难道它不应该将 protected
с-tor 带到 vector
范围的 public
,从而像 MyVector...
和 {{1 等其他成员一样更改对它的访问权限吗? }}?以及为什么 at
被认为是上述有问题的类型声明,如果我们尝试将它 push_back
与 using Super::vector;
一起使用,它显然是指由 C2923
错误提示的构造函数。即使它是一种类型,为什么语言不像 Super::vector
那样公开访问它?
IsAType
错误 C2247:'std::vector
错误 C2247:'std::vector
错误 C2923:'IsAType':'std::vector
更新: 所以看起来真正的原因是当我们谈论构造函数时,标准忽略使用声明访问修饰符: http://eel.is/c++draft/namespace.udecl#14 http://eel.is/c++draft/namespace.udecl#16 如果我错了,请纠正我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。