我希望在一个 map 中将我的 class 作为 key,因此我重载了 operator+。如果我将其重载为友元函数,则可以正常工作。但是,如果我在类内部将其重载为成员函数,则会导致编译错误。
具体而言,这段代码无法编译,并生成编译错误:
Syl.h
具体而言,这段代码无法编译,并生成编译错误:
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
版本无论如何都是更好的选择。 - Sebastian Redlconst
,而另一个版本仅表示输入参数为const
。您必须将该方法标记为const
... 您必须仔细阅读错误信息,特别注意诸如const
、signed
等单词的含义。 - Kupto