【问题标题】:What is being defined in this class definition此类定义中定义的内容
【发布时间】:2020-12-20 05:48:31
【问题描述】:

我正在学习虚幻引擎,并且对 C++ 有所了解。但是,我不完全确定这行代码发生了什么。有人可以像我 5 岁那样向我解释吗?

class ESCAPEROOM_API UWorldPosition : public UActorComponent

我们将函数定义为 UActorComponent,这是可以理解的,但不确定这篇文章中发生了什么:

class ESCAPEROOM_API UWorldPosition

剩下的代码,

#pragma once

#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "WorldPosition.generated.h"


UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class ESCAPEROOM_API UWorldPosition : public UActorComponent <==========
{
    GENERATED_BODY()

public: 
    // Sets default values for this component's properties
    UWorldPosition();

protected:
    // Called when the game starts
    virtual void BeginPlay() override;

public: 
    // Called every frame
    virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

        
};


【问题讨论】:

  • 这不是函数定义。这是一个名为UWorldPosition 的类的定义,它派生自一个名为UActorComponent 的基类
  • ESCAPEROOM_API 的名字是什么?

标签: c++ unreal-engine4


【解决方案1】:

我们将函数定义为 UActorComponent

不正确,您正在定义一个类 UWorldPosition,该类公开派生自另一个类 UActorComponent

ESCAPEROOM_API 部分不是标准 C++,但它可能是一个宏,其目的是从共享库中导出该类。见here

由于您是 C++ 的初学者,您可能会发现使用good book 可以更轻松地了解它。 C++ 是一门复杂的语言。

【讨论】:

    【解决方案2】:

    评论太长了。)

    对虚幻引擎一无所知,但之前浏览过 C++ 代码,这是我在第一次快速阅读时看到的,它告诉我代码定义了从 UActorComponent 派生的类 UWorldPosition,目的是覆盖基础中定义的两个虚函数。

    class ... UWorldPosition : public UActorComponent
    {
        ... BeginPlay() override;
    
        ... TickComponent(...) override;      
    };
    

    这些是跳过全大写宏(UCLASSESCAPEROOM_API)后剩下的部分,这些宏必须是一些非标准的实现细节/属性、样板代码(GENERATE_BODY,默认构造函数)等等有趣或冗余的位(#includevirtual)。

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2012-02-19
      • 1970-01-01
      • 2019-04-20
      • 2011-02-14
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多