2017-06-24 15 views
1

私はUE4開発のためのいくつかの出発のコースをやっている、と私はUE4でC++の使用に関する質問がありました。C++ Unrealの4 - ポインタ構文

私は基本的な位置の記者を作成するチュートリアルをしています。

以下は、GetOwner()のピーク定義です。

FORCEINLINE_DEBUGGABLE class AActor* UActorComponent::GetOwner() const 
{ 


    // During undo/redo the cached owner is unreliable so just used GetTypedOuter 
    if (bCanUseCachedOwner) 
    { 
     checkSlow(OwnerPrivate == GetTypedOuter<AActor>()); // verify cached value is correct 
     return OwnerPrivate; 
    } 
    else 
    { 
     return GetTypedOuter<AActor>(); 
    } 

誰かが次の行が正確に何をしているのか教えてください。

はAActorのメモリアドレスをつかんclass AActor*ですか?それともポインタを作成していますか?

は、私はちょうどこのセクションの周りに私の心を包む問題を抱えて、(、間接参照することができます何かのメモリアドレスへのポインタポイント)ポインタの基本を知っています。

FORCEINLINE_DEBUGGABLE class AActor* UActorComponent::GetOwner() const 

私はそのようなUObjectBaseのように、UE4のソースコードのさまざまな部分にこれらの多くを見ているので、私はこれらのすべてを把握しようとしています。デバッグマクロをスキップ

UObjectBase::UObjectBase(UClass* InClass, EObjectFlags InFlags, EInternalObjectFlags InInternalFlags, UObject *InOuter, FName InName) 
: ObjectFlags   (InFlags) 
, InternalIndex  (INDEX_NONE) 
, ClassPrivate  (InClass) 
, OuterPrivate  (InOuter) 
{ 
    check(ClassPrivate); 
    // Add to global table. 
    AddObject(InName, InInternalFlags); 
} 
+1

それだけでは、戻り値の定義です。この関数は 'AActor'型のオブジェクトへのポインタを返します –

答えて

3

、行の残り

class AActor* UActorComponent::GetOwner() const 

は前方クラス型を宣言すると、戻り値にこれを使用するだけで、複雑な方法です。

私は2つの部分でこれを記述します。クラスオブジェクトへのポインタが返された(またはパラメータとして使用)クラスがどのように見えるかを知らなくても、それがなるまでそれ以外に使用することはできませんすることができ

class AActor; // forward declare class type 

AActor* UActorComponent::GetOwner() const; 

完全なクラスの宣言が見られます。

+0

今、私は分かる。返信ありがとう、ボー – alexo1378

関連する問題