C ++エラー-非静的メンバー関数への参照を呼び出す必要があります



C Error Reference Non Static Member Function Must Be Called



今日、leetcodeで435の質問をブラッシングしたときに、このエラーが発生しました。

solution.cpp:メンバー関数eraseOverlapIntervals行19:文字51:エラー:非静的メンバー関数の無効な使用'bool Solution :: cmp(const Interval&、const Interval&)' sort(intervals.begin()、intervals.end()、cmp)



コードは次のように表示されます。

/** * Definition for an interval. * struct Interval { * int start * int end * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * } */ class Solution { public: bool cmp(const Interval &a,const Interval &b){ return a.end

cmp関数を作成する前は、クラス外で作成されていました。今回はクラスで見つけて無理でした。 。この深刻な問題について慎重に考えて、それを記録するために記事を書いてください。



bool cmp(const Interval&a、const Interval&b)のようなメンバー関数の場合、それはクラスに属しているため、呼び出すにはオブジェクトが必要です。これは、boolcmpなどの関数の完全なタグが次のとおりであるためです。

bool cmp(Solution * this、const Interval&a、const Interval&b)

つまり、暗黙的なパラメーター(暗黙的なパラメーター)があり、主にパラメーターが一致しないために、sort()などの関数から呼び出すことができなくなります。もちろん、この関数を静的に変更してください。