c++ - 访问基类外部基类的私有嵌套类成员
问题描述
我有一个基类和嵌套类,其结构如下。
基础 Hpp 文件
class Base{
private:
class Nested;
Nested* nested_ptr;
public:
Base();
Nested& GetNested();
基本 Cpp 文件
Base::Base(){
nested_ptr = new Nested();
}
Base::Nested& Base::GetNested(){
return *nested_ptr;
}
嵌套类在单独的文件中实现。
我的编译器是 apple clang 11.0,cpp 标准是 17。
当我尝试通过访问嵌套类时
Base base{}
Base::Nested& nested = base.GetNested();
我收到编译器错误。但是当我尝试通过嵌套访问时
Base base{}
auto& nested = base.GetNested();
这样编译成功。此功能是可移植的还是苹果 clang 编译器中的错误。
Base base{};
base.GetNested().DoSomething();
这也编译成功。
解决方案
推荐阅读
- reactjs - 永远不会在子组件中调用 ShouldComponentUpdate
- java - 按值排序的 BinaryTree 打印
- docker - 有没有办法清除 docker 历史记录?
- postgresql - 一个通常简单的 SQL 连接
- c++ - 不起作用复制赋值运算符
- java - 没有 kotlin 代码时,我真的需要使用 kapt 吗?
- c# - C#如何计算二进制字符串的奇偶校验并将其添加到字符串中
- java-8 - 使用 java 8 api 在 CompletableFuture 上流式传输时出现编译错误
- c++ - 如何在 C++ 应用程序中设置“选择精度”光标?
- google-sheets - 计算联赛积分榜模板中的总比赛数