c++ - auto之前的私有(private)类的实例

标签 c++ subclass auto

我试图找到如何在“auto”之前实例化私有(private)子类的元素,那么如何使主函数的第二行正常工作:

class A{
private:
    class B{
    public:
        void f(){};
    };

public:
    static B getB(){ return {};};
};
int main(){
    auto x1 = A::getB();
    A::B x2 = A::getB(); // B is a private member of A , so i can't write A::B
}

最佳答案

这很少有用。我建议首先弄清楚为什么这样做,而不是如何这样做。

在给定私有(private) B 的情况下,无法让 A::BA 的范围之外工作。但是您可以在友元类中提供公共(public)别名,并使用类似的声明:

class A{
    // ...
    friend struct C;
};

struct C {
    typedef A::B B;
};

C::B x2 = A::getB();

关于c++ - auto之前的私有(private)类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60066697/

相关文章:

c++ - 如何禁用 ALPN 扩展?

C++ : Do functions have a value?

c++ - 在 memcpy 缓冲区 UB 上使用 reinterpret_cast 吗?

java - protected 内部类不能从另一个包的子类访问

c++ - 将参数传递给通用 lambda 时复制构造函数不正确

char 数组上的 C++ 内存模型和竞争条件

c++ - 哪个更好,一个类(class)中的一个类(class)还是一个单独的类(class)?

cocoa - 使用 Cocoa Bindings 将编程文本字段值更改传播到模型

c++ - 将 std::bind 创建的对象传递给函数的正确方法是什么?

c++ - 来自 const std::vector<>& 的自动;对象还是引用?