TFieldPtrAccessor

Helper to provide backward compatibility when converting a raw pointer into accessors.

Choose your operating system:

Windows

macOS

Linux

References

Module

Core

Header

/Engine/Source/Runtime/Core/Public/Misc/FieldAccessor.h

Include

#include "Misc/FieldAccessor.h"

Syntax

template<typename T>
class TFieldPtrAccessor

Remarks

Helper to provide backward compatibility when converting a raw pointer into accessors.

The helper is trying hard to mimic's a raw pointer field functionality without breaking compatibility for existing code.

The helper's getter are all const and return a non-const pointer. This is because accessing a pointer field inside a const struct will not make that pointer const like we typically do for accessors. Since we want to mimic the behavior of a public field as much as possible, we offer that same functionality.

The helper supports being captured in a lamba as seen below and will become a const copy of the value at the capture's moment. ex: [CapturedValue = Object.OnceARawFieldBecomingAnAccessor]() { ExtractedValue contains a copy that will not change even if the original Object.OnceARawFieldBecomingAnAccessor changes. const Class* ExtractedValue = CapturedValue; });

This helper also supports taking a nullptr in its constructor so it properly supports conditional like such ex: ExtractedValue* Val = (Condition) ? Object.OnceARawFieldBecomingAnAccessor : nullptr;

A comforming compiler is supposed to try both conversions (nullptr -> TFieldPtrAccessor and TFieldPtrAccessor -> nullptr) but MSVC without the /permissive- flag will only try to cast nullptr into a TFieldPtrAccessor, which has to succeed to avoid breaking compabitility with existing code.

For more info, please refer to https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2019#ambiguous-conditional-operator-arguments

Constructors

Name Description

Public function

TFieldPtrAccessor

(
    T* InValue
)

Self-owned value with initializer.

Public function

TFieldPtrAccessor

(
    const TFieldPtrAccessor& Other
)

Capture the value of the passed field accessor and becomes self-owned.

Public function

TFieldPtrAccessor

(
    TFunction< T*()> InGet,
    TFunction< void> InSet
)

Owned by another class that will control the value. Will not use the internal value.

Operators

Name Description

Public function Const

 

operator bool()

Public function Const

 

operator OtherT *()

Public function Const

 

operator T *()

Public function Const

bool

 

operator!()

Public function Const

bool

 

operator!=

(
    const T* OtherPtr
)

Public function

TFieldPtrAcc...

 

operator=

(
    const TFieldPtrAccessor& Other
)

Public function

TFieldPtrAcc...

 

operator=

(
    TFieldPtrAccessor&&
)

Public function

TFieldPtrAcc...

 

operator=

(
    T* OtherPtr
)

Public function Const

bool

 

operator==

(
    const T* OtherPtr
)

Public function Const

T *

 

operator->()