0

最初に、ヘッダー ファイルに次のスタイルで非メンバー演算子 == 関数を記述しました。

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

しかし、それが複数定義されているという理由でコンパイルは失敗します。2 つの方法を試してみましたが、どちらも機能します。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 に答える