将shared_ptr与堆栈上创建的对象进行比较

Set*_*eth 0 c++ smart-pointers

我有一种情况,我想比较一个shared_ptr封装的对象与堆栈上创建的相同类型的对象.目前,我正在获取原始指针并取消引用它来进行比较,例如:

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

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

有一个更好的方法吗?这假设当两个对象相遇以便相互比较时,一个是shared_ptr而另一个不是.

olo*_*ney 11

shared_ptr重载operator*(),使它就像一个指针一样,所以只需写:

if ( *B < A ) {
Run Code Online (Sandbox Code Playgroud)

docs:http://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/shared_ptr.htm#indirection