gpt4 book ai didi

c++ - 使用基类指针调用派生类中的非虚函数

转载 作者:行者123 更新时间:2023-11-30 00:53:24 25 4
gpt4 key购买 nike

this answer 中所述:

high reliance on dynamic_cast is often an indication your design has gone wrong.

我想知道的是如何在派生类中调用自定义函数,因为基类中没有同名函数,但是使用基类指针并且可能没有 dynamic_cast 如果实际上有更好的方法。

如果这个函数是在两者中定义的虚函数,那很容易。但这是派生类独有的功能。

也许 dynamic_cast 是最好的方法?

最佳答案

为了调用Derived 类的函数,您必须获得指向派生类的指针。作为一种选择(视情况而定),您可能希望使用 static_cast 而不是 dynamic,但正如您所说:

这通常表明您的设计出了问题

此外,有时我认为使用强制转换没问题。当我为游戏设计 GUI 库时,它有一个基类 Widget 和许多子类。一个实际的窗口布局是在编辑器中创建的,后来一些 Loader 类正在扩展这个布局。为了用每个小部件数据(与游戏相关)的实际特定数据填充布局中的小部件,我制作了一种从小部件查询小部件的子项的方法。此函数重新调整 Widget*,然后我将其dynamic_casted 为实际类型。我还没有找到更好的设计。

后来我也发现Android上的GUI系统也是一样的

关于c++ - 使用基类指针调用派生类中的非虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566771/

25 4 0
文章推荐: c++ - 在编写类似的 CUDA 内核时,如何不在没有宏的情况下重复自己?
文章推荐: c++ - 将短的固定长度字符串(52 个字符)压缩到小于 40
文章推荐: c++ - void init(Handle exports) 中的 是什么