我首先在头文件中写了一个非成员运算符==函数:
bool operator==(
const Node& lhs,
const Node& rhs)
{
return lhs.uid == rhs.uid;
}
但它编译失败的原因是它的多重定义。 我尝试了两种方法,它们都有效。 1将实现移动到cpp文件 2使这个操作符==静态函数。
大多数搜索结果都是关于第一个解决方案。 但我可以让它静止吗?哪个更好?
提前致谢〜
答案 0 :(得分:4)
如果您已将该函数放入头文件中,则需要将其设为inline
。否则,编译器将在使用它的任何源文件中吐出一个单独的副本,从而导致链接器冲突。
inline bool operator==(
const Node& lhs,
const Node& rhs)
{
return lhs.uid == rhs.uid;
}