我正在使用 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 <utility>
上面添加,#include <string>
但仍然遇到同样的错误。相反,如果我如下将该行分成两部分,则它编译时不会出错。
string a = string("abcd");
a += "xyz";
或者
string b = string("abcd");
string a = b + "xyz";
使用这种解决方法是不切实际的,因为我必须使用现有的代码,而这些代码不会出现大量错误。相同的代码在其他 XE3 项目中没有错误。任何想法如何解决这个错误?