首页 > 解决方案 > 访问基类外部基类的私有嵌套类成员

问题描述

我有一个基类和嵌套类,其结构如下。

基础 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();

这也编译成功。

标签: c++inner-classes

解决方案


推荐阅读