0

私はSorterというクラスを持っています。それには2つの公開アイテムがあります。非静的メンバー関数を使用したC++ソートベクトル

  1. int型可変choice
  2. メンバ関数は、パラメータとして2つのオブジェクトを受け入れるint型の戻り値とcompareと呼ばれます。

コンストラクタに値がchoiceを通過しながら、私は、私はvectorをソートするためにC++ sort機能を使用したい、Sorterのインスタンスを作成

を試みました。作成したインスタンスのメンバ関数compareを渡す必要があります。

メンバー関数compareは、変数choiceを使用してソートメカニズムを決定します。

しかし、Sorterというインスタンスのメンバ関数compareへのポインタを取得できませんでした。

誰かがこれについてアドバイスできますか?

+5

達成しようとしていることは完全にはっきりしていません。 'Sorter'の定義や使用例など、いくつかのコードを投稿してください。 –

答えて

4

あなたSorterクラスの構造を変更することができれば、あなたはこのようなoperator()を定義することによって、その関数オブジェクト作ることができます:

bool Sorter::operator()(const MyObject &o1, const MyObject &o2) { 
    // return true if o1 < o2 
} 

次に、あなただけのstd::sortにごSorterクラスのインスタンスを渡すことができます。

+0

ありがとうございます。出来た。 –

0

残念なことに、標準ライブラリには、このようなもののコンビネータが少し欠けています。ただし、boost::lambdaはジョブを実行できます。

#include <boost/lambda/bind.hpp> 

namespace l = boost::lambda; 

struct foo { 
    bool bar(char, char); 
}; 


void test(foo *pFoo) { 
    char a[2] = {0}; 

    std::sort(a, a+1, 
      l::bind(&foo::bar, pFoo, l::_1, l::_2)); 
} 
関連する問題