我上G级。
B类:公共G
A类:公共B
D类:公共G
C类:公共D
F级:公共G
E级:公共F
从另一个班级,我可以访问G(对不起!!)。我要得到一些A类的成员(例如,字符串m_Astr)。
如何访问A字符串?如果我在G类中使用纯虚拟,除了A的实现之外,我还必须在E和C中实现这个getStr函数,我只需要它为A.
请帮助
答案 0 :(得分:2)
如果知道(某种方式)指向的对象实际上是 A
的实例,那么您可以使用static_cast
:
G* p = get_the_thing();
A* a = static_cast <A*> (p); // OK
但是,如果上面p
指向的对象没有实例化A
,那么上面的代码将产生未定义的行为。
更安全的方法是使用dynamic_cast
,
G* p = get_the_thing();
A* a = dynamic_cast <A*> (p); // OK
如果a
不是实际 NULL
,p
将是A
。但是,dynamic_cast
只能以这种方式使用多态类:基类必须至少有一个virtual
函数。一个virtual
析构函数在这里做得很好。