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 回答