根据这个answerdynamic_cast将基类转换为派生类是可以的,但是他说这表明代码逻辑存在根本问题。

我看过其他答案,使用dynamic_cast很好,因为以后可以检查指针的有效性。

现在,在我真正的问题中,派生类具有一个不是虚拟的GetStrBasedOnCP函数(仅派生类具有它),我必须对其进行访问。

更好的方法是,在基类上创建virtual void GetStrBasedOnCP,并在派生OR上使其成为virtual,仅将基类指针转换为派生类?

还要注意,这是一个unsigned int GetStrBasedOnCP,因此基类还必须返回一个值...

最佳答案

您必须在其中具有虚函数的基类有意义吗?

如果没有,则不应在基类中包含该函数。请记住,最佳实践涵盖了一般情况。有时候,您需要做一些通常不会做的事情才能使代码正常工作。关键是您需要清晰,简洁,可理解的代码

09-10 03:11
查看更多