【发布时间】:2020-01-18 16:15:59
【问题描述】:
B类:我在我的项目中处于这种类型的场景中,我在x()baseclass A的函数中,需要从派生的class C访问数据y。
我已经声明了派生class C 的对象并使用obj_c 我得到了x() 函数
class A
{
private :
public :
//.....
void x()
{
cout << y ;
}
//.....
};
class B : public A
{
public :
//.....
protected :
//.....
private :
//.....
};
class C : public B
{
public :
//.....
protected :
int y = 10 ;
private :
//.....
};
int main()
{
C obj_c ;
obj_c.x();
}
【问题讨论】:
-
如果没有一些奇怪的技巧,你就无法做到这一点。为什么不在
C中制作x()virtual和override? -
提示:
virtual. -
"我在基类 A 的 x() 函数中,需要访问派生类 C 中的数据 y。" 这在术语上是矛盾的。
A甚至不知道C是否存在。它也不知道当前的A是否实际上是C。只有C知道它是C。 -
如果有人写
B obj_b; obj_b.x();,你想怎么办?
标签: c++ class oop inheritance