我有以下课程:
class A
{
protected:
class InnerA {};
};
现在,我需要在测试中访问InnerA类。
从理论上讲,我可以创建一个派生自A的测试类,并将A类的某些部分公开。我当然可以使用字段来执行此操作,但是不能使用内部类来执行此操作。
有没有办法从A类层次结构(所有派生自A的类)的外部查看受保护的InnerA类?我希望能够写:
Test(MyTest, InnerATest)
{
TestA::InnerA x;
x.DoSth();
}
最佳答案
实际上,您可以继承和宣传该类。
class A
{
protected:
class InnerA {};
};
struct expose : A {
using A::InnerA;
};
int main() {
expose::InnerA ia;
return 0;
}
就像其他任何受保护成员一样。这是标准的C ++。