I am trying to compare a QSharedPointer with a raw pointer to the underlying object:
MyClass* object = new MyClass;
QSharedPointer<MyClass> sharedObject (object);
if(object == sharedObject)
return true; // If Equal
Will this work correctly?
Yes it is valid, because QSharedPointer has a related operator==:
template <typename T, typename X>
bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2)
That compares a raw pointer to a QSharedPointer and:
Returns true if the pointer ptr1 is the same pointer as that referenced by ptr2.
So in your case (object == sharedObject) will be true.
Note:
The operands can also be compared in the opposite order, because there is also:
template <typename T, typename X> bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2).