1. ホーム
  2. C++

sort(...)」への呼び出しに対応する関数がない、エラー

2022-02-12 19:14:34
<パス

からの転載です。 https://blog.csdn.net/vintionnee/article/details/19400663

sort(std::vectorSolution::Node::iterator)' の呼び出しにマッチする関数はありません。

sort(,. ,. , cmp)です。

コードが正しいことは確かで、型比較に時間がかかったのですが、いつもこのエラーで催促されます。

そこで、cmp関数はクラスの外で定義する必要があることに気づきました。

コンクリートです。

cmp()

{...}

クラス ソリューション

{ <未定義

...

sort(...)です。

}

理由

cmp はクラスで定義されたメンバ関数です。最初は、「sort(...), ' の呼び出しに一致する関数がありません」というエラーが報告され続けました。その後、このメンバを静的関数として定義したら、問題は解決しました。その理由は、クラスのメンバ関数のプロトタイプに関係があるようです。すべてのメンバ関数は暗黙のポインタ引数、すなわちthisを持っており、これはsortに必要なcomp関数プロトタイプと矛盾しているので、エラーを報告する。静的関数はこの暗黙の引数を持っていません。

クラス内に cmp 関数がある場合、それが呼び出されると、型に this ポインタが追加され、もちろんこれは正しい型ではありません