3

std::set コンテナーを使用するのは初めてで、演算子 std::less に問題があります。

セットを宣言します:

std::set<MyClass*, std::less<MyClass> > _set;

次に、MyClassのoperator<をオーバーロードします。このエラーメッセージがあるため、問題はクラスとポインターの組み合わせに関連しているようです:

no match for call to '(std::less<MyClass>) (MyClass *const&, MyClass *const&)'
4

2 に答える 2

4

をオーバーロードoperator<しましMyClassたが、セットにはへのポインタがありますMyClass

簡単な答えは、ポインターを使用しないことです。ポインターを使用する必要があると思われる場合は、セットのカスタム コンパレーターを作成することをお勧めします。

struct Comp
{
    bool operator()(MyClass* x, MyClass* y);
};

std::set<MyClass*, Comp> _set;
于 2013-11-11T11:48:48.910 に答える
2

だけを使用したいstd::set<MyClass>。コンパレータのデフォルトはstd::lessです。

于 2013-11-11T11:46:30.973 に答える