我有一种情况,我想将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而另一个不是。
答案 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)
这对我来说是对的。这是一个指针。要比较它指向的东西,你需要取消引用它。