template class CCL::ObservedPtr

Observed pointer is nulled automatically when its subject is destroyed.

#include <iobserver.h>

template <class T>
class ObservedPtr: public CCL::IObserver
{
public:
    // construction

    ObservedPtr (T* subject = nullptr);
    ObservedPtr (const ObservedPtr& other);

    // methods

    bool isValid () const;
    ObservedPtr& assign (T* subject);
    ObservedPtr& operator = (T* subject);
    ObservedPtr& operator = (const ObservedPtr& other);
    operator T* () const;
    T* operator -> () const;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    virtual void CCL_API notify (ISubject* subject, MessageRef msg) = 0;

    static IObserver void notify (
        IUnknown* unknown,
        ISubject* subject,
        MessageRef msg
    );