【问题标题】:C++ Unreal 4 - Pointer SyntaxC++ Unreal 4 - 指针语法
【发布时间】:2017-06-24 03:20:24
【问题描述】:

我有一些关于 UE4 开发的入门课程,我有一个关于 UE4 中 C++ 使用的问题。

我正在做一个创建基本职位报告者的教程。

下面是GetOwner()的peek定义。

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>();
    }

有人能告诉我下面这行到底在做什么吗?

class AActor*是不是在抢AActor的内存地址?或者它是在创建一个指针?

我知道指针的基础知识(指向某事物的内存地址的指针 POINTS,可以取消引用),只是无法围绕本节来思考。

FORCEINLINE_DEBUGGABLE class AActor* UActorComponent::GetOwner() const

我在 UE4 源代码的各个部分(例如 UObjectBase)中看到了很多这样的内容,所以我试图弄清楚这些。

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);
}

【问题讨论】:

  • 只是返回值定义。该函数返回一个指向AActor 类型对象的指针

标签: c++ pointers unreal-engine4


【解决方案1】:

跳过调试宏,其余行

class AActor* UActorComponent::GetOwner() const

只是一种前向声明类类型并在返回值中使用它的复杂方式。

我会分两部分来写:

class AActor;   // forward declare class type

AActor* UActorComponent::GetOwner() const;

可以在不知道类长什么样的情况下返回(或用作参数)指向类对象的指针,但在看到完整的类声明之前,不能以其他方式使用它。

【讨论】:

  • 好的。我现在知道了。谢谢你的回复,博
猜你喜欢
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多