我有以下课程:
AFRAME.registerComponent('myCode', {
init: function () {
//whatever you want, remember that the scope here is not the window,
//but the element using this component ( now it'd be the a-scene)
}
});
现在我需要在测试中访问InnerA类。 从理论上讲,我可以创建一个派生自A的测试类,并将A类的某些部分设为public。我当然可以用字段来做,但不能用内部类来做。
有没有办法从A类层次结构(从A派生的所有类)之外看到受保护的InnerA类?我希望能够写下:
class A
{
protected:
class InnerA {};
};
答案 0 :(得分:3)
事实上,你可以继承和宣传这个类。
class A
{
protected:
class InnerA {};
};
struct expose : A {
using A::InnerA;
};
int main() {
expose::InnerA ia;
return 0;
}
与基地的任何其他受保护成员一样。这是标准的C ++。
答案 1 :(得分:0)
如果您希望为另一个类或函数公开class A
的非公开部分,可以尝试使用friend
关键字:
class A
{
protected:
friend class B;
friend void f();
int x;
};
class B
{
public:
void sayX()
{
A a;
a.x = 12;
std::cout << a.x << std::endl;
}
};
void f()
{
A a;
a.x = 11;
std::cout << a.x << std::endl;
}
如果你想向所有人公开这个字段,那么我认为我们最好将该字段公开,或者为它设置get / set函数。