我试图找到如何在“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::B
在 A
的范围之外工作。但是您可以在友元类中提供公共(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/