共有の参照

未初期化または NULL を代入できないスマートポインタ型

Windows
MacOS
Linux

共有の参照 は non-nullable 型のシェアード ポインタです。つまり空の共有の参照を作成できず、また共有の参照に NULL を代入することもできません。オブジェクトへのアクセスの安全性が確保されるため、より安全でクリーンなコードが書けます。実際に、シェアードポインタとは異なり常に有効となるため、共有の参照には IsValid() メソッドさえありません。できれば、シェアードポインタの代わりに常に共有の参照を使用することが推奨されています。

空/nullable 参照が必要な場合、 シェアード ポインタ を代わりに使用してください。

宣言と初期化

共有の参照は常に有効なオブジェクトで初期化され、初期化せずに宣言することはできません。

新規の共有の参照の作成例:

// Create a shared reference to a new node
TSharedRef<FTreeNode> NodeRef( new FTreeNode() );

初期化せずにまたは NULL を代入した共有の参照の宣言は絶対にできません:

TSharedRef<UBool> EmptyBool;            // Will not Compile!!

共有の参照の使用法

ほとんどの場合、共有の参照の使用はシェアードポインタの使用に似ています。

// Create a shared reference to a new node
TSharedRef<FTreeNode> NodeRef( new FTreeNode() );

NodeRef->ListChildren();
( *NodeRef ).ListChildren();
const FTreeNode& NodeVar = NodeRef.Get();

繰り返しになりますが、主な違いはシェアードポインタを NULL に設定できないことです。

TSharedRef<FTreeNode> Node = null;      // Will not Compile!!

ポインタと参照変換

共有の参照はシェアードポインタに暗黙的に変換するため、参照からのポインタの作成は常に安全が確保されます。共有の参照をシェアードポインタへ代入したり、シェアードポインタを要求するメソッドへ共有の参照を渡すなどが例としてあげられます。

TSharedPtr<FTreeNode> SomeNodePtr = NodeRef;

しかし、ポインタからの変換は潜在的に危険な行為であるため、ToSharedRef() 関数を使用した明示的な変換の実行が強制されます。

// Explicitly reference a pointer. Will assert if the pointer is not valid!
NodeRef = SomeNodePtr.ToSharedRef();

C++ ポインタの * 演算子と同じような方法で、ToSharedRef() 関数の使用はオブジェクトが無効な場合アサートします。

タグ

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信