没有强制转换的dynamic_cast类型检查功能?

时间:2015-05-03 07:55:35

标签: c++ rtti dynamic-cast

关于这个问题有很多问题,但似乎没有人专门解决这个问题:鉴于代码库不允许用虚函数解决所有问题(正如你通常会做的那样),有一个函数:

dynamic_cast

但很明显,即使没必要,演员也会被制作出来。如何编写此函数以仅检查,即使用staticText功能而不进行实际演员?假设用虚函数替换对此函数的调用是不切实际的,或为此目的实现穷人的RTTI。

编辑:在标题上添加问号,强调对可能性的怀疑

1 个答案:

答案 0 :(得分:1)

没有相同的功能。你只有两种选择。

  1. 开始牵手RTTI(最糟糕的选择),包括访客。
  2. 继续使用dynamic_cast。
  3. 我不知道为什么你甚至不关心防止指针调整,因为它是一个相当简单的例子,可以进行几次vtable查找(进入已经在缓存中的vtable)并执行几次减法。 dynamic_cast的所有实际工作都将在两种情况下完成。此外,我没有看到is_a的结果会在没有将指针强制转换为该类型的情况下使用。

    没有简单的方法可以做你想做的事情,主要是因为它没有意义,因此没有人决定提供它。