【发布时间】:2017-07-16 05:06:38
【问题描述】:
我想在map 中使用我的class 作为key,所以我重载了operator+。如果我将它作为友元函数重载,它会很好地工作。当我将它作为类中的成员函数重载时,会导致编译错误。
错误 C2678:二进制“。
详细来说,这不会编译,并产生编译错误:
Syl.h
bool operator< (const Syl& rhs);
Syl.cpp
bool Syl::operator< (const Syl& rhs) { return false; }
编译时。
Syl.h
friend bool operator< (const Syl& lhs, const Syl& rhs);
Syl.cpp
bool operator< (const Syl& lhs, const Syl& rhs) { return false; }
我不知道为什么。我知道 operator
【问题讨论】:
-
由于重载解析和隐式转换的工作方式,
friend版本是一个更好的主意。 -
友好版本指定,两个操作数都为
const,另一个版本只表示输入参数为const。你必须把方法标记为……你必须仔细阅读错误,特别注意const、signed等词的含义。
标签: c++ operator-overloading overloading