作者:firespace | 来源:互联网 | 2022-12-02 17:26
1> George suppo..:
snake->crawl();
尝试crawl
通过a 访问LivingThing*
,没有v表引用,LivingThing*
无法调用Snake::crawl
.
在当前示例中,您可以将LivingThing
指针更改为Snake
指针.
在更复杂的情况下:
如果你知道你正在调用的指针指向crawl
一个实际上是a的对象Snake
那么你可以static_cast
使用指针.
if(Snake* snake = static_cast(livingThing))
snake->crawl();
如果您无法保证生物实际上是一个Snake
并且rtti
您可以使用,那么您可以使用dynamic_cast
.
if(Snake* snake = dynamic_cast(livingThing))
snake->crawl();