Unreal Engine C++代码中成员声明里‘class’关键字的含义
关于Unreal Engine C++中
FORCEINLINE class代码的解析 核心结论:这里不是在声明新类,拆解两个关键字的作用如下:
1. class关键字的作用
这里的class UCameraComponent*和class USpringArmComponent*属于前向声明。因为当前头文件可能未包含UCameraComponent.h或USpringArmComponent.h,用class + 类名可以告诉编译器“该类已存在,后续会有完整定义”,以此避免编译报错。这种写法在Unreal代码中很常见,目的是减少头文件依赖、加快编译速度。
2. FORCEINLINE的含义
FORCEINLINE是Unreal Engine定义的宏,作用是强制编译器对函数进行内联处理:
- 标准C++的
inline只是给编译器一个内联建议,编译器可自行决定是否执行;而FORCEINLINE会强制将函数代码直接插入到调用位置,而非生成函数调用指令。 - 这种写法非常适合示例中这类简单的getter函数(仅返回成员变量),既能减少函数调用的性能开销,又能保持代码封装性(私有成员变量通过getter对外暴露)。
代码逻辑回顾
示例中的两行代码本质是两个强制内联的getter函数:
FORCEINLINE class UCameraComponent* GetTopDownCameraComponent() const { return TopDownCameraComponent; } FORCEINLINE class USpringArmComponent* GetCameraBoom() const { return CameraBoom; }
用于安全访问私有成员变量TopDownCameraComponent和CameraBoom,开头的class仅做类类型的前向声明,并非定义新类。
内容的提问来源于stack exchange,提问作者EchtFettigerKeks
相关产品推荐
相关产品推荐

