如何使用重载 == 运算符将一个类中的 char 数组与另一个 char 数组进行比较?
Posted
技术标签:
【中文标题】如何使用重载 == 运算符将一个类中的 char 数组与另一个 char 数组进行比较?【英文标题】:How do I compare a char array from a class with another char array using the overload == operator? 【发布时间】:2020-11-18 14:12:58 【问题描述】:我有一个名为 Airplane 的类,它有一个私有数据成员,它是一个 char 数组。
// char array variable in my class
char* namenullptr;
我的目标是比较这个变量和一个 const char [] 类型的输入变量是否相等。
我的重载函数如下所示:
bool Airplane::operator==(const char input_name[]) const
if (this->name == input_name)
return true;
return false;
通过重载 == 运算符,我希望能够做到以下几点:
Airplane plane("hello");
if (plane == "hellooo")
// do something
我希望能够创建一个带有像“hello”这样的文本变量的类,然后能够将其 == 与我想要比较相等性的任何随机文本。现在我的代码不起作用,它运行然后在控制台中结束,没有错误。基本上我需要与 char 数组进行比较,一个在类中内置了重载函数,另一个作为用户输入给出。感谢您的帮助。
【问题讨论】:
char *
不是数组。为什么不直接使用std::string
?
改用std::string
如果你真的想使用 char* 使用 if(strcmp(this->name, input_name) == 0)
【参考方案1】:
正如@PaulMcKenzie 所说,char*
不是数组。
我建议使用std::string
代替char*
以及overload
,如下所示:
const bool Airplane::operator==(const std::string& str_to_be_compared) const
return this->(whatever variable stores the name of the plane) == str_to_be_compared;
【讨论】:
我会尝试一下,并尽快更新我的帖子,谢谢。以上是关于如何使用重载 == 运算符将一个类中的 char 数组与另一个 char 数组进行比较?的主要内容,如果未能解决你的问题,请参考以下文章