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