auto 之前的 private class 实例
Instance of private class before auto
我正在尝试找到如何实例化私有子类的元素 "before auto",那么如何使主类的第二行正常工作:
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
}
这东西很少有用。我建议首先弄清楚 为什么 这样做而不是 如何 这样做。
无法让 A::B
在给定私有 B
的 A
范围之外工作。但是你可以例如在朋友 class 中提供一个 public 别名,并使用类似的声明:
class A{
// ...
friend struct C;
};
struct C {
typedef A::B B;
};
C::B x2 = A::getB();
我正在尝试找到如何实例化私有子类的元素 "before auto",那么如何使主类的第二行正常工作:
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
}
这东西很少有用。我建议首先弄清楚 为什么 这样做而不是 如何 这样做。
无法让 A::B
在给定私有 B
的 A
范围之外工作。但是你可以例如在朋友 class 中提供一个 public 别名,并使用类似的声明:
class A{
// ...
friend struct C;
};
struct C {
typedef A::B B;
};
C::B x2 = A::getB();