0

次のコードがあります。

typedef unsigned char tTerm;
typedef uint64_t nTerm;

boost::unordered_map<tTerm *, nTerm> map;

nTerm function(tTerm * key) {
  boost::unordered_map<tTerm *, nTerm>::iterator it = standardTerms.find(key);
    if (it != standardTerms.end()) {
      return it->second;
  }
}

このコードは、(MacO で) clang を使用して正しくコンパイルされます。ただし、eclipse は、find() メソッドの呼び出し方法に問題があることを警告しています。具体的には、エラーを返すことにより、互換性のない引数で find() が呼び出されたことを警告します。

"無効な引数 ' 候補は次のとおりです: boost::unordered::iterator_detail::iterator>> find(const unsigned char &) boost::unordered::iterator_detail::c_iterator>,const boost::unordered::detail::ptr_node> *> find(const unsigned char &) boost::unordered::iterator_detail::iterator>> find(const #10000 &, const #10001 &, const #10002 &) boost::unordered::iterator_detail::c_iterator>, const boost::unordered::detail::ptr_node> *> find(const #10000 &, const #10001 &, const #10002 &) '"

すべてのコードが正しくコンパイルされるようになったので、Eclipse のバグである可能性があります。ただし、このメッセージを無視すると、重要な情報が失われる可能性があります。どう思いますか?

4

1 に答える 1

0

心配する必要はありません。私には正しいように見えます。ポインターをキーとして使用できます。エクリプスのせいだと思います。

于 2013-11-05T07:33:10.837 に答える