0
set<int>
をクラスのメンバーとして宣言したいと思います。その内部にクラスインスタンスフィールドを使用するカスタムコンパレータを渡したいと思います。このようなメンバーフィールドを使用するC++セットコンパレータ
何か:これはエラーになります
class MyClass {
public:
MyClass() : my_set(fn_pt) {}
std::vector<int> blocks;
bool comp(int lhs, int rhs) {
return blocks[lhs] < blocks[rhs];
}
bool(*fn_pt)(int,int)=comp;
std::set<int, bool(*)(int,int)> my_set;
};
:
error: cannot convert ‘MyClass::comp’ from type ‘bool (MyClass::)(int, int)’
to type ‘bool (*)(int, int)’
bool(*fn_pt)(int,int)=comp;
どのように私はそれが仕事を得ることができますか? ありがとう
を行うことができます!私は今、同じことをする別の方法を見つけました(同様の考え方ですが、構造体を使用します):http://stackoverflow.com/questions/27467980/how-to-define-a-stdset-sorting-on-another-class- data-member?rq = 1 –
このクラスの値のセマンティクスは、このような設定で壊れています。 –
@BenjaminLindleyあなたは精巧にお聞かせください、私は分かりません。どのような代替案を提案しますか?ありがとう –