如何修复E2367无法从非RTTI基础'异常'继承RTTI类

时间:2011-12-21 04:55:44

标签: boost rtti c++builder-2010

我正在尝试使用boost库来标记我的字符串'因为boost有强大的字符串操作算法而不是STL但速度稍慢但是因为我只需要一次标记一行 - 它符合我的需要。

因此,当添加#include <boost/algorithm/string.hpp> inc文件时,它会出现几个错误!

那么如何修复错误E2367(RTTI)???正如Emb官方网站在此解释http://docwiki.embarcadero.com/RADStudio/en/E2366_Can't_inherit_non-RTTI_class_from_RTTI_base_OR_E2367_Can't_inherit_RTTI_class_from_non-RTTI_base_(C%2B%2B)  这对我没有意义!!

请帮忙!

1 个答案:

答案 0 :(得分:0)

可能在项目选项中关闭了RTTI - &gt; C ++编译器 - &gt; C ++编译部分。创建新项目时,默认情况下可以打开RTTI。

有关详细信息,请参阅this Embarcadero QualityCentral ticket。以下是一些摘录,如果它们被摧毁到Embarcadero Neverland:

重现步骤:

bcc32 -c -RT- 238409.cpp

//exp : clean compile 
//res : 
Error E2367 D:\borland\dexter\Include\typeinfo.h 114: Can't inherit RTTI class from non-RTTI base 'exception'
Error E2367 D:\borland\dexter\Include\typeinfo.h 115: Can't inherit RTTI class from non-RTTI base 'exception'
Error E2238 D:\borland\dexter\Include\dinkumware\xlocale 649: Multiple declaration for 'codecvt<wchar_t,char,int>::in(int &,const char *,const char *,const char * &,wchar_t *,wchar_t *,wchar_t * &) const'
Error E2344 D:\borland\dexter\Include\dinkumware\xlocale 538: Earlier declaration of 'codecvt<wchar_t,char,int>::in(int&,const char *,const char *,const char * &,wchar_t *,wchar_t *,wchar_t * &) const'
Error E2238 D:\borland\dexter\Include\dinkumware\xlocale 657: Multiple declaration for 'codecvt<wchar_t,char,int>::out(int &,const wchar_t *,const wchar_t *,const wchar_t * &,char *,char *,char * &) const'

<强>解决方法:

enable rtti