gpt4 book ai didi

c++ - 与用户构建的类似字符串类型的字符串比较

转载 作者:太空狗 更新时间:2023-10-29 20:05:38 25 4
gpt4 key购买 nike

通常你可以比较字符串..

if (var1 == "a string") ...

但是当我用转换运算符声明我自己的类时,像这样:

class my_type {
operator std::string() const { ... };
....
}

现在这个:

 std::string var1("a string");
my_type x("a string");
if (x == "a string") ....
if (x == var1) ....

不起作用..即..

error: no match for ‘operator==’ 

这当然有效:

 if ((std::string) x == var1) ....

但我希望它在没有显式转换的情况下发生。为什么 c++ 不将 my_type 转换为字符串以进行比较..我怎样才能强制它在不实现“==”运算符本身的情况下执行此操作?其他比较运算符也是如此。

谢谢

PS> 顺便说一句,如果我实现将 my_type 转换为数字的运算符(这对我的类型来说没问题)...比如:

 operator double() const { ... };

与数字的比较工作正常,我不需要实现 == 等......

最佳答案

正如指出的那样here ,这不是关于隐式转换,而是关于 operator == 如何在字符串上表现。

不过,我建议您为您的类重载 operator == 而不要依赖隐式转换。

关于c++ - 与用户构建的类似字符串类型的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12371834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com