代码之家  ›  专栏  ›  技术社区  ›  alfC

使用auto实例化私有类[duplicate]

  •  1
  • alfC  · 技术社区  · 7 年前

    struct A{
    private:
        struct B{};
    public:
        B make() const{return B{};}
    };
    
    int main(){
        A a; 
        auto b1 = a.make(); (void)b1;
    //  A::B b2 = a.make(); (void)b2; // compile error: B is a private class
    }
    

    能够编译的逻辑是什么 b1 b2 行吗? 毕竟 auto 应该等价于替换类的名称。

    汽车 汽车 在私有类上可以使用 用户不知道某些类型,但仍然可以使用它们的实例!(这在C++ 98中是不可能的吗?)

    我误解了吗?

    0 回复  |  直到 7 年前