UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TObjectPtr< T > Struct Template Reference

#include <ObjectPtr.h>

Public Types

using ElementType = T
 

Public Member Functions

constexpr TObjectPtr ()
 
 TObjectPtr (TObjectPtr< T > &&Other)
 
 TObjectPtr (const TObjectPtr< T > &Other)
 
constexpr FORCEINLINE TObjectPtr (ENoInit)
 
FORCEINLINE constexpr TObjectPtr (TYPE_OF_NULLPTR)
 
FORCEINLINE constexpr TObjectPtr (FObjectPtr ObjPtr)
 
FORCEINLINE consteval TObjectPtr (EConstEval, T *Object)
 
template<typename U >
FORCEINLINE constexpr TObjectPtr (const TObjectPtr< U > &Other)
 
template<typename U >
constexpr FORCEINLINE TObjectPtr (const U &Object)
 
FORCEINLINE TObjectPtr (T &Object)
 
FORCEINLINE TObjectPtr (TPrivateObjectPtr< T > &&PrivatePtr)
 
TObjectPtr< T > & operator= (TObjectPtr< T > &&Other)
 
TObjectPtr< T > & operator= (const TObjectPtr< T > &Other)
 
FORCEINLINE TObjectPtr< T > & operator= (TYPE_OF_NULLPTR)
 
template<typename U >
FORCEINLINE TObjectPtr< T > & operator= (const TObjectPtr< U > &Other)
 
template<typename U >
FORCEINLINE TObjectPtr< T > & operator= (U &&Object)
 
FORCEINLINE TObjectPtr< T > & operator= (TPrivateObjectPtr< T > &&PrivatePtr)
 
template<typename U , typename Base = std::common_type_t<T*, U*>>
FORCEINLINE bool UEOpEquals (const TObjectPtr< U > &Other) const
 
FORCEINLINE bool UEOpEquals (TYPE_OF_NULLPTR) const
 
template<typename U , typename = decltype(ObjectPtr_Private::IsObjectPtrEqual(std::declval<const TObjectPtr<T>&>(), std::declval<const U&>()))>
FORCEINLINE bool UEOpEquals (const U &Other) const
 
FORCEINLINE T * Get () const
 
FORCEINLINE UClassGetClass () const
 
FORCEINLINE TObjectPtr< UObjectGetOuter () const
 
FORCEINLINE TObjectPtr< UPackageGetPackage () const
 
FORCEINLINE bool IsIn (FObjectPtr SomeOuter) const
 
template<typename U >
FORCEINLINE bool IsIn (TObjectPtr< U > SomeOuter) const
 
FORCEINLINE operator T* () const
 
template<typename U >
FORCEINLINE operator U* () const
 
FORCEINLINE operator UPTRINT () const
 
FORCEINLINE T * operator-> () const
 
FORCEINLINE T & operator* () const
 
FORCEINLINE operator T*& ()
 
FORCEINLINE bool operator! () const
 
FORCEINLINE operator bool () const
 
FORCEINLINE bool IsResolved () const
 
FORCEINLINE bool IsRemote () const
 
FORCEINLINE FString GetPath () const
 
FORCEINLINE FString GetPathName () const
 
FORCEINLINE FName GetFName () const
 
FORCEINLINE FString GetName () const
 
FORCEINLINE FString GetFullName (EObjectFullNameFlags Flags=EObjectFullNameFlags::None) const
 
FORCEINLINE FObjectHandle GetHandle () const
 
FORCEINLINE bool IsA (const UClass *SomeBase) const
 
template<typename U >
FORCEINLINE bool IsA () const
 
FORCEINLINE uint32 GetPtrTypeHash () const
 
FORCEINLINE void SerializePtrStructured (FStructuredArchiveSlot Slot)
 
TObjectPtr< T > & GetAccessTrackedObjectPtr ()
 
const TObjectPtr< T > & GetAccessTrackedObjectPtr () const
 

Friends

struct FObjectPtr
 
template<typename U >
struct TObjectPtr
 
template<typename U , typename V >
bool ObjectPtr_Private::IsObjectPtrEqualToRawPtrOfRelatedType (const TObjectPtr< U > &Ptr, const V *Other)
 

Detailed Description

template<typename T>
struct TObjectPtr< T >

TObjectPtr is a type of pointer to a UObject that is meant to function as a drop-in replacement for raw pointer member properties. It is size equivalent to a 64-bit pointer and supports access tracking and optional lazy load behavior in editor builds. It stores either the address to the referenced object or (in editor builds) an index in the object handle table that describes a referenced object that hasn't been loaded yet. It is serialized identically to a raw pointer to a UObject. When resolved, its participation in garbage collection is identical to a raw pointer to a UObject.

This is useful for automatic replacement of raw pointers to support advanced cook-time dependency tracking and editor-time lazy load use cases. See UnrealObjectPtrTool for tooling to automatically replace raw pointer members with FObjectPtr/TObjectPtr members instead.

Examples
/work/Engine/Source/Runtime/UMG/Public/Components/Widget.h.

Member Typedef Documentation

◆ ElementType

template<typename T >
using TObjectPtr< T >::ElementType = T

Constructor & Destructor Documentation

◆ TObjectPtr() [1/11]

template<typename T >
constexpr TObjectPtr< T >::TObjectPtr ( )
inlineconstexpr

◆ TObjectPtr() [2/11]

template<typename T >
TObjectPtr< T >::TObjectPtr ( TObjectPtr< T > &&  Other)
inline

◆ TObjectPtr() [3/11]

template<typename T >
TObjectPtr< T >::TObjectPtr ( const TObjectPtr< T > &  Other)
inline

◆ TObjectPtr() [4/11]

template<typename T >
constexpr FORCEINLINE TObjectPtr< T >::TObjectPtr ( ENoInit  )
inlineexplicitconstexpr

◆ TObjectPtr() [5/11]

template<typename T >
FORCEINLINE constexpr TObjectPtr< T >::TObjectPtr ( TYPE_OF_NULLPTR  )
inlineconstexpr

◆ TObjectPtr() [6/11]

template<typename T >
FORCEINLINE constexpr TObjectPtr< T >::TObjectPtr ( FObjectPtr  ObjPtr)
inlineexplicitconstexpr

◆ TObjectPtr() [7/11]

template<typename T >
FORCEINLINE consteval TObjectPtr< T >::TObjectPtr ( EConstEval  ,
T *  Object 
)
inlineexplicit

◆ TObjectPtr() [8/11]

template<typename T >
template<typename U >
FORCEINLINE constexpr TObjectPtr< T >::TObjectPtr ( const TObjectPtr< U > &  Other)
inlineconstexpr

◆ TObjectPtr() [9/11]

template<typename T >
template<typename U >
constexpr FORCEINLINE TObjectPtr< T >::TObjectPtr ( const U &  Object)
inlineconstexpr

◆ TObjectPtr() [10/11]

template<typename T >
FORCEINLINE TObjectPtr< T >::TObjectPtr ( T &  Object)
inline

◆ TObjectPtr() [11/11]

template<typename T >
FORCEINLINE TObjectPtr< T >::TObjectPtr ( TPrivateObjectPtr< T > &&  PrivatePtr)
inlineexplicit

Member Function Documentation

◆ Get()

template<typename T >
FORCEINLINE T * TObjectPtr< T >::Get ( ) const
inline

◆ GetAccessTrackedObjectPtr() [1/2]

template<typename T >
TObjectPtr< T > & TObjectPtr< T >::GetAccessTrackedObjectPtr ( )
inline

◆ GetAccessTrackedObjectPtr() [2/2]

template<typename T >
const TObjectPtr< T > & TObjectPtr< T >::GetAccessTrackedObjectPtr ( ) const
inline

◆ GetClass()

template<typename T >
FORCEINLINE UClass * TObjectPtr< T >::GetClass ( ) const
inline

◆ GetFName()

template<typename T >
FORCEINLINE FName TObjectPtr< T >::GetFName ( ) const
inline

◆ GetFullName()

template<typename T >
FORCEINLINE FString TObjectPtr< T >::GetFullName ( EObjectFullNameFlags  Flags = EObjectFullNameFlags::None) const
inline

◆ GetHandle()

template<typename T >
FORCEINLINE FObjectHandle TObjectPtr< T >::GetHandle ( ) const
inline

◆ GetName()

template<typename T >
FORCEINLINE FString TObjectPtr< T >::GetName ( ) const
inline

◆ GetOuter()

template<typename T >
FORCEINLINE TObjectPtr< UObject > TObjectPtr< T >::GetOuter ( ) const
inline

◆ GetPackage()

template<typename T >
FORCEINLINE TObjectPtr< UPackage > TObjectPtr< T >::GetPackage ( ) const
inline

◆ GetPath()

template<typename T >
FORCEINLINE FString TObjectPtr< T >::GetPath ( ) const
inline

◆ GetPathName()

template<typename T >
FORCEINLINE FString TObjectPtr< T >::GetPathName ( ) const
inline

◆ GetPtrTypeHash()

template<typename T >
FORCEINLINE uint32 TObjectPtr< T >::GetPtrTypeHash ( ) const
inline

◆ IsA() [1/2]

template<typename T >
template<typename U >
FORCEINLINE bool TObjectPtr< T >::IsA ( ) const
inline

◆ IsA() [2/2]

template<typename T >
FORCEINLINE bool TObjectPtr< T >::IsA ( const UClass SomeBase) const
inline

◆ IsIn() [1/2]

template<typename T >
FORCEINLINE bool TObjectPtr< T >::IsIn ( FObjectPtr  SomeOuter) const
inline

◆ IsIn() [2/2]

template<typename T >
template<typename U >
FORCEINLINE bool TObjectPtr< T >::IsIn ( TObjectPtr< U >  SomeOuter) const
inline

◆ IsRemote()

template<typename T >
FORCEINLINE bool TObjectPtr< T >::IsRemote ( ) const
inline

◆ IsResolved()

template<typename T >
FORCEINLINE bool TObjectPtr< T >::IsResolved ( ) const
inline

◆ operator bool()

template<typename T >
FORCEINLINE TObjectPtr< T >::operator bool ( ) const
inlineexplicit

◆ operator T*()

template<typename T >
FORCEINLINE TObjectPtr< T >::operator T* ( ) const
inline

◆ operator T*&()

template<typename T >
FORCEINLINE TObjectPtr< T >::operator T*& ( )
inlineexplicit

◆ operator U*()

template<typename T >
template<typename U >
FORCEINLINE TObjectPtr< T >::operator U* ( ) const
inlineexplicit

◆ operator UPTRINT()

template<typename T >
FORCEINLINE TObjectPtr< T >::operator UPTRINT ( ) const
inlineexplicit

◆ operator!()

template<typename T >
FORCEINLINE bool TObjectPtr< T >::operator! ( ) const
inline

◆ operator*()

template<typename T >
FORCEINLINE T & TObjectPtr< T >::operator* ( ) const
inline

◆ operator->()

template<typename T >
FORCEINLINE T * TObjectPtr< T >::operator-> ( ) const
inline

◆ operator=() [1/6]

template<typename T >
TObjectPtr< T > & TObjectPtr< T >::operator= ( const TObjectPtr< T > &  Other)
inline

◆ operator=() [2/6]

template<typename T >
template<typename U >
FORCEINLINE TObjectPtr< T > & TObjectPtr< T >::operator= ( const TObjectPtr< U > &  Other)
inline

◆ operator=() [3/6]

template<typename T >
TObjectPtr< T > & TObjectPtr< T >::operator= ( TObjectPtr< T > &&  Other)
inline

◆ operator=() [4/6]

template<typename T >
FORCEINLINE TObjectPtr< T > & TObjectPtr< T >::operator= ( TPrivateObjectPtr< T > &&  PrivatePtr)
inline

◆ operator=() [5/6]

template<typename T >
FORCEINLINE TObjectPtr< T > & TObjectPtr< T >::operator= ( TYPE_OF_NULLPTR  )
inline

◆ operator=() [6/6]

template<typename T >
template<typename U >
FORCEINLINE TObjectPtr< T > & TObjectPtr< T >::operator= ( U &&  Object)
inline

◆ SerializePtrStructured()

template<typename T >
FORCEINLINE void TObjectPtr< T >::SerializePtrStructured ( FStructuredArchiveSlot  Slot)
inline

◆ UEOpEquals() [1/3]

template<typename T >
template<typename U , typename Base = std::common_type_t<T*, U*>>
FORCEINLINE bool TObjectPtr< T >::UEOpEquals ( const TObjectPtr< U > &  Other) const
inline

◆ UEOpEquals() [2/3]

template<typename T >
template<typename U , typename = decltype(ObjectPtr_Private::IsObjectPtrEqual(std::declval<const TObjectPtr<T>&>(), std::declval<const U&>()))>
FORCEINLINE bool TObjectPtr< T >::UEOpEquals ( const U &  Other) const
inline

◆ UEOpEquals() [3/3]

template<typename T >
FORCEINLINE bool TObjectPtr< T >::UEOpEquals ( TYPE_OF_NULLPTR  ) const
inline

Friends And Related Symbol Documentation

◆ FObjectPtr

template<typename T >
friend struct FObjectPtr
friend

◆ ObjectPtr_Private::IsObjectPtrEqualToRawPtrOfRelatedType

template<typename T >
template<typename U , typename V >
bool ObjectPtr_Private::IsObjectPtrEqualToRawPtrOfRelatedType ( const TObjectPtr< U > &  Ptr,
const V *  Other 
)
friend

◆ TObjectPtr

template<typename T >
template<typename U >
friend struct TObjectPtr
friend

Member Data Documentation

◆ DebugPtr

template<typename T >
T* TObjectPtr< T >::DebugPtr

◆ ObjectPtr

template<typename T >
FObjectPtr TObjectPtr< T >::ObjectPtr

The documentation for this struct was generated from the following files: