禁用某些类的RTTI

Pup*_*ppy 5 c++ g++

我有一个C++翻译单元,我需要在其中禁用两个类的RTTI,但没有别的.有什么#pragma rtti(off)东西可以使用吗?

我只需要为该类禁用RTTI.我没有抛出或捕获或者dynamic_cast或者这个类的任何东西,所以我根本不需要RTTI.它的方法的实现当然需要使用RTTI编译,因为它们确实可以抛出异常,它只是我需要抑制的这一个typeinfo对象的生成.

n. *_* m. 3

要在 g++ 中为特定类禁用 RTTI,而不禁用其他任何内容(在有限的测试用例上进行测试,请谨慎操作):

  1. 将类定义移至单独的头文件中。
  2. 向您的类添加一个新的虚函数virtual void nortti();。使其成为第一个虚拟函数。
  3. 将其实现放入单独的源文件中。使用 编译此文件fno-rtti
  4. 正常编译类实现的其余部分。