0

shared_ptr によってカプセル化されたオブジェクトを、スタック上に作成された同じタイプのオブジェクトと比較したい状況があります。現在、生のポインターを取得し、それを逆参照して比較を行っています。

Object A;
std::shared_ptr<Object> B;

// assume class Object has its comparison operators overloaded
if ( *B.get() < A )
    // do stuff here

これを行うより良い方法はありますか?これは、両方のオブジェクトが相互に比較されるときに、一方が shared_ptr であり、他方がそうでないことを前提としています。

4

2 に答える 2

11

shared_ptrはoperator*()をオーバーロードして、ポインターのように機能するようにするため、次のように記述します。

if ( *B < A ) {

ドキュメント:http ://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/shared_ptr.htm#indirection

于 2010-02-17T02:45:00.033 に答える
2

それは私には正しいように見えます。それはポインタです。それが指しているものを他のものと比較するには、それを逆参照する必要があります。

于 2010-02-17T02:36:54.130 に答える