twe*_*606 0 c++ operator-overloading operators
我试图==在C++中重载运算符.
#include <string>
using namespace std;
namespace date_independent
{
class clock
{
public:
int clockPair[2] = {0,0};
operator string() const
{
string hourString;
string minString;
if(clockPair[0]<10)
{
hourString = "0"+to_string(clockPair[0]);
}
else
{
hourString = to_string(clockPair[0]);
}
if(clockPair[1]<10)
{
minString = "0"+to_string(clockPair[1]);
}
else
{
minString = to_string(clockPair[1]);
}
return hourString+":"+minString;
};
bool operator ==(const clock&clockOne, const clock&clockTwo) const
{
return string(clockOne)==string(clockTwo);
};
};
};
Run Code Online (Sandbox Code Playgroud)
代码比我所包含的要多得多,但这是重要的部分.我想要它,以便==操作员可以比较两个类的对象clock.例如,object1==object2.有没有人可以帮助我?
二进制运算符==可以作为具有单个参数的成员函数(this作为左侧操作数,参数是右侧参数)重载,或者作为具有两个操作数的两个参数的非成员函数.
所以要么
inline如果您将定义保留在标题中则声明它); 要么friend到定义中,以便它在周围的命名空间中声明一个非成员; 要么this.作为会员,它看起来像
bool operator==(const const & clockTwo) const {
return string(*this) == string(clockTwo);
}
Run Code Online (Sandbox Code Playgroud)
您可能还希望直接比较两个整数值以节省制作字符串的费用.您还应该;在函数和命名空间定义之后删除流氓,尽管大多数现代编译器都不应该反对它们的存在.