我有兩個文件:沒有運營商 「<」 匹配這些操作數的操作數類型是:雙<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