Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitk::WeakPointer< T > Class Template Referencefinal

A weak pointer that observes an itk::Object without preventing its deletion. More...

#include <mitkWeakPointer.h>

Inheritance diagram for mitk::WeakPointer< T >:

Public Types

using DeleteEventCallbackType = std::function< void()>
 Callback type invoked when the observed object is deleted. More...
 

Public Member Functions

 WeakPointer () noexcept
 Default constructor. Creates an expired weak pointer (null). More...
 
 WeakPointer (T *rawPointer)
 Construct a weak pointer observing the given raw pointer. More...
 
 WeakPointer (const WeakPointer &other)
 Copy constructor. Observes the same object as other. More...
 
 WeakPointer (WeakPointer &&other)
 Move constructor. Takes over the observed object from other. More...
 
 ~WeakPointer () noexcept
 Destructor. Removes the delete-event observer from the observed object. More...
 
WeakPointer & operator= (const WeakPointer &other)
 Copy assignment operator. More...
 
WeakPointer & operator= (WeakPointer &&other)
 Move assignment operator. More...
 
WeakPointer & operator= (std::nullptr_t)
 Assign nullptr to reset this weak pointer to an expired state. More...
 
WeakPointer & operator= (T *other)
 Assign a raw pointer to observe. More...
 
 operator bool () const noexcept
 Bool conversion operator. More...
 
bool IsExpired () const noexcept
 Check whether the observed object has been deleted. More...
 
itk::SmartPointer< T > Lock () const
 Obtain a smart pointer to the observed object. More...
 
void SetDeleteEventCallback (const DeleteEventCallbackType &callback)
 Set a callback to be invoked when the observed object is deleted. More...
 

Detailed Description

template<class T>
class mitk::WeakPointer< T >

A weak pointer that observes an itk::Object without preventing its deletion.

WeakPointer holds a non-owning reference to an itk::Object-derived instance. It automatically detects when the observed object is deleted by registering an itk::DeleteEvent observer. After the object is deleted, the weak pointer expires (IsExpired() returns true and Lock() returns nullptr).

An optional delete-event callback can be registered via SetDeleteEventCallback() to receive notification when the observed object is destroyed.

Unlike itk::WeakPointer, this implementation supports const pointers.

All comparison operators (==, !=, <, >, <=, >=) are supported via C++20 operator== and operator<=> generation.

Template Parameters
TThe type of the observed object. Must derive from itk::Object.

Definition at line 43 of file mitkWeakPointer.h.

Member Typedef Documentation

◆ DeleteEventCallbackType

template<class T >
using mitk::WeakPointer< T >::DeleteEventCallbackType = std::function<void ()>

Callback type invoked when the observed object is deleted.

Definition at line 47 of file mitkWeakPointer.h.

Constructor & Destructor Documentation

◆ WeakPointer() [1/4]

template<class T >
mitk::WeakPointer< T >::WeakPointer ( )
inlinenoexcept

Default constructor. Creates an expired weak pointer (null).

Definition at line 50 of file mitkWeakPointer.h.

◆ WeakPointer() [2/4]

template<class T >
mitk::WeakPointer< T >::WeakPointer ( T *  rawPointer)
inline

Construct a weak pointer observing the given raw pointer.

Parameters
[in]rawPointerThe object to observe. May be nullptr.

Definition at line 60 of file mitkWeakPointer.h.

◆ WeakPointer() [3/4]

template<class T >
mitk::WeakPointer< T >::WeakPointer ( const WeakPointer< T > &  other)
inline

Copy constructor. Observes the same object as other.

Parameters
[in]otherThe weak pointer to copy from.

Definition at line 71 of file mitkWeakPointer.h.

◆ WeakPointer() [4/4]

template<class T >
mitk::WeakPointer< T >::WeakPointer ( WeakPointer< T > &&  other)
inline

Move constructor. Takes over the observed object from other.

After the move, other is in an expired state (null).

Parameters
[in]otherThe weak pointer to move from.

Definition at line 84 of file mitkWeakPointer.h.

◆ ~WeakPointer()

template<class T >
mitk::WeakPointer< T >::~WeakPointer ( )
inlinenoexcept

Destructor. Removes the delete-event observer from the observed object.

Definition at line 93 of file mitkWeakPointer.h.

Member Function Documentation

◆ IsExpired()

template<class T >
bool mitk::WeakPointer< T >::IsExpired ( ) const
inlinenoexcept

Check whether the observed object has been deleted.

Returns
True if the weak pointer is expired (null), false otherwise.

Definition at line 194 of file mitkWeakPointer.h.

◆ Lock()

template<class T >
itk::SmartPointer<T> mitk::WeakPointer< T >::Lock ( ) const
inline

Obtain a smart pointer to the observed object.

If the observed object is still alive, a valid itk::SmartPointer is returned. If it has been deleted, a null SmartPointer is returned.

Returns
An itk::SmartPointer to the observed object, or nullptr.

Definition at line 207 of file mitkWeakPointer.h.

◆ operator bool()

template<class T >
mitk::WeakPointer< T >::operator bool ( ) const
inlineexplicitnoexcept

Bool conversion operator.

Returns
True if the observed object is still alive, false if expired.

Definition at line 184 of file mitkWeakPointer.h.

◆ operator=() [1/4]

template<class T >
WeakPointer& mitk::WeakPointer< T >::operator= ( const WeakPointer< T > &  other)
inline

Copy assignment operator.

Uses classic implementation rather than copy-and-swap, because swapping is non-trivial when the observed object keeps references to its observers.

Parameters
[in]otherThe weak pointer to copy from.
Returns
Reference to this weak pointer.

Definition at line 115 of file mitkWeakPointer.h.

◆ operator=() [2/4]

template<class T >
WeakPointer& mitk::WeakPointer< T >::operator= ( std::nullptr_t  )
inline

Assign nullptr to reset this weak pointer to an expired state.

Returns
Reference to this weak pointer.

Definition at line 153 of file mitkWeakPointer.h.

◆ operator=() [3/4]

template<class T >
WeakPointer& mitk::WeakPointer< T >::operator= ( T *  other)
inline

Assign a raw pointer to observe.

Parameters
[in]otherThe raw pointer to observe. May be nullptr.
Returns
Reference to this weak pointer.

Definition at line 167 of file mitkWeakPointer.h.

◆ operator=() [4/4]

template<class T >
WeakPointer& mitk::WeakPointer< T >::operator= ( WeakPointer< T > &&  other)
inline

Move assignment operator.

After the move, other is in an expired state (null).

Parameters
[in]otherThe weak pointer to move from.
Returns
Reference to this weak pointer.

Definition at line 135 of file mitkWeakPointer.h.

◆ SetDeleteEventCallback()

template<class T >
void mitk::WeakPointer< T >::SetDeleteEventCallback ( const DeleteEventCallbackType &  callback)
inline

Set a callback to be invoked when the observed object is deleted.

Parameters
[in]callbackThe callback function. May be empty to clear.

Definition at line 217 of file mitkWeakPointer.h.


The documentation for this class was generated from the following file: