我有两个文件:没有运营商 “<” 匹配这些操作数的操作数类型是:双<my_class
my_header.h
:
class my_class {
public:
my_class();
my_class(long long number);
my_class(int number);
my_class(double number);
bool operator<(const my_class& rhs) const;
//////
}
my_class.h
:
my_class::my_class()
{
//implementation
}
my_class::my_class(long long number)
{
//implementation
}
my_class::my_class(int number)
{
//implementation
}
my_class::my_class(double number)
{
//implementation
}
bool my_class::operator<(my_class const& rhs) const
{
//implementation
}
我不明白,我错了。我超载运算符<
。另外,我有constructor
从double
类型。
当然,此外,我执行其他5个运营商(==, !=, >, <=, =>
)this scheme。其他运算符在同一个命名空间中,但它们不是成员函数。
测试用例:
my_class a = 2;
bool check = 5.17 < long_int1;
提供一个自由函数'布尔运算符<(双LHS ,my_class const&rhs)'或者从double创建一个临时的'my_class'。 – clcto 2014-11-05 22:30:02
可能重复的[运算符重载:成员函数与非成员函数?](http://stackoverflow.com/questions/4622330/operator-overloading-member-function-vs-non-member-function) – 2014-11-05 22:31:05
clcto,为什么我必须提供这个功能?实际上,我有双重构造函数,为什么C++不会执行double - > my_class? – Denis 2014-11-05 22:31:38