C++ RWCString和const char之间的隐式转换* RWCString str=“Y”; str.append(“ES”); 如果(“是”==str) cout

C++ RWCString和const char之间的隐式转换* RWCString str=“Y”; str.append(“ES”); 如果(“是”==str) cout,c++,implicit-conversion,rogue-wave,C++,Implicit Conversion,Rogue Wave,在比较const char*和RWCString时,==极有可能过载 否则,str将转换为const char*或调用不明确: str==“YES”如果存在外部或成员运算符==比较两个RWCStrings,则表示不明确 如果有一个外部操作符==比较两个RWCStrings,则“YES”==str是不明确的 (假设运算符==的参数正常传递——通过副本或const引用传递)。我认为RWCString类型的临时变量是由const char*字符串构造的。这更可能发生,因为:RWCString str=

在比较
const char*
RWCString
时,
==
极有可能过载

否则,
str
将转换为
const char*
或调用不明确:

str==“YES”
如果存在外部或成员
运算符==
比较两个
RWCString
s,则表示不明确

如果有一个外部
操作符==
比较两个
RWCString
s,则“YES”==str是不明确的


(假设
运算符==
的参数正常传递——通过副本或
const
引用传递)。

我认为
RWCString
类型的临时变量是由
const char*
字符串构造的。这更可能发生,因为:
RWCString str=“Y”。你为什么要使用第三方字符串库而不是
std::string
?我正在处理使用此库的现有代码。我遇到这一行,想知道这是否会一直起作用。@ashot:问题说明存在到
const char*
(问题的最后一句话)的转换,所以我猜答案是肯定的。@liijie你确定RWCString可以隐式转换为const char*?因为如果它不能,并且const char*可以隐式地转换为RWCSTRing,那么我就看不到任何歧义了?
RWCString str = "Y";
str.append("ES");
if("YES" == str)
    cout << "YES == str" << endl;
if(str == "YES")
    cout << "str == YES" << endl;