如何使用重载 == 运算符将一个类中的 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 数组进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

枚举类中的 c++ 运算符重载

模板类和插入提取重载

c ++模板类中的运算符重载

C++,如何在派生类中调用基类的重载提取运算符?

基类中的运算符重载问题

c ++:是不是可以在派生类中定义重载运算符,这将工作objs基类类型