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

时间:2010-02-17 02:27:44

标签: 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

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

2 个答案:

答案 0 :(得分:11)

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

if ( *B < A ) {

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

答案 1 :(得分:2)

这对我来说是对的。这是一个指针。要比较它指向的东西,你需要取消引用它。