繁体   English   中英

C ++ Builder XE3项目中std :: string的编译器错误

[英]Compiler error for std::string in c++ builder XE3 project

我正在C ++ Builder XE3中开发服务应用程序。 如果添加以下行,我将得到std :: string的编译器错误:

string a = string("abcd") + "xyz";

错误输出如下:

[bcc32 Error] string(141): E2285 Could not find a match for 'move<_Ty>(string)'
  Full parser context
string(140): decision to instantiate: string std::string + <char,char_traits<char>,allocator<char> >(string &&,const char *)
--- Resetting parser context for instantiation...
svcmain.cpp(21): #include C:\Program Files\Embarcadero\RAD Studio\10.0\include\boost_1_39\boost\tr1\tr1\string
string(20): #include c:\program files\embarcadero\rad studio\10.0\include\../include/dinkumware/string
string(7): namespace std
string(140): parsing: string std::string + <char,char_traits<char>,allocator<char> >(string &&,const char *)

我试图在#include <string>上方添加#include <utility> ,但仍然出现相同的错误。 相反,如果我按如下所示将这条线分成两部分,则可以正确编译。

string a = string("abcd");
a += "xyz";

要么

string b = string("abcd");
string a = b + "xyz";

使用这种解决方法不切实际,因为我必须使用现有的代码,而且没有太多错误。 相同的代码在其他XE3项目中可以正常工作。 任何想法如何解决此错误?

我在另一个项目中找到了解决方法。 将“向后兼容性”选项设置为false可修复错误。 您可以在-项目选项-> C ++编译器->兼容性->常规中找到该复选框。 最初将其设置为true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM