0

我首先在头文件中以这种风格编写了一个非成员运算符 == 函数:

bool operator==(
  const Node& lhs,
  const Node& rhs)
{
  return lhs.uid == rhs.uid;
}

但它编译失败的原因是它的多个定义。我尝试了两种方法,它们都有效。1 将实现移动到 cpp 文件 2 使此运算符 == 静态函数。

大多数搜索结果都在谈论第一个解决方案。但是我可以让它静态吗?哪一个更好?

先谢谢了~

4

1 回答 1

4

如果您已将该函数放在头文件中,则需要将其制作为inline. 否则编译器将在任何使用它的源文件中生成它的单独副本,从而导致链接器冲突。

inline bool operator==(
  const Node& lhs,
  const Node& rhs)
{
  return lhs.uid == rhs.uid;
}
于 2013-09-11T03:45:09.250 回答