根据这个answer,dynamic_cast
将基类转换为派生类是可以的,但是他说这表明代码逻辑存在根本问题。
我看过其他答案,使用dynamic_cast
很好,因为以后可以检查指针的有效性。
现在,在我真正的问题中,派生类具有一个不是虚拟的GetStrBasedOnCP
函数(仅派生类具有它),我必须对其进行访问。
更好的方法是,在基类上创建virtual void GetStrBasedOnCP
,并在派生OR上使其成为virtual
,仅将基类指针转换为派生类?
还要注意,这是一个unsigned int GetStrBasedOnCP
,因此基类还必须返回一个值...
最佳答案
您必须在其中具有虚函数的基类有意义吗?
如果没有,则不应在基类中包含该函数。请记住,最佳实践涵盖了一般情况。有时候,您需要做一些通常不会做的事情才能使代码正常工作。关键是您需要清晰,简洁,可理解的代码