私はC++クラスを持っていますが、低レベルのCも使用しており、bsearch
関数を使用する必要があります。 bsearch
の最後の引数は比較関数です。クラスのconst private変数にアクセスできるように、関数を実装したいと思います。std :: bsearchでメンバー関数を使用する方法
問題は、私が比較関数をメンバー関数にすると、正規関数ポインタへの変換ができないため、機能しません。非メンバ関数を作成した場合、それをbsearch
に渡すことはできますが、クラスのプライベート変数にはアクセスできません。
どうすればよいですか?
3は、比較機能が必要3 elements.16,32,56がactors.I'mオフセットarray.Iで検索を検索する必要がBSEARCH bytes.Iにオフセットされているがあることを意味しますactorを比較しますが、私はlasoが必要です。const void * actorFile比較関数内の位置を計算するポインタです.actorFIleはクラスのプライベート変数です。
@StoryTeller素早く返信いただきありがとうございます。純粋なbsearchを使用することはできませんか?また私はlower_boundをすばやく見ていました。また、cmp関数も必要です。この場合、bsearchとはどのように違いますか? – sparrow2
'std :: lower_bound'は任意の種類のファンクタ(関数、またはlambdaを含むoperator()が定義されたオブジェクト)をとることができます。オブジェクトを使用すると、比較を行うために必要な変数を保持できます。 – vu1p3n0x
プライベートメンバーにゲッターを提供すると、compare関数はフリー関数になります。あなたがアクセスする必要がある場合は、プライベートメンバーがクラス外からアクセスすることはできません。公開するか、アクセスする方法を提供します。 – user463035818