请问类继承后为何很多头文件无法直接调用了呢?

[复制链接]
查看3143 | 回复8 | 2016-6-13 20:13:32 | 显示全部楼层 |阅读模式
这个搞了好久了,一直没解决,拜托各位帮我看看吧,谢谢啦!
这样的,我建立了一个车辆的C++工程模板,然后打算仿造WheeledVehicleMovementComponent4W,从WheeledVehicleMovementComponent这个类派生出一个名为VehicleMovementComponentNW的新类来。官方的WheeledVehicleMovementComponent4W中#include “EnginePrivate.h”可以直接在WheeledVehicleMovementComponent4W.h中调用,而我把它放在我自己的VehicleMovementComponentNW.h中却打不开,必须输入形如#include “D:/Epic Games/4.12/Engine/Source/Runtime/Engine/Private/EnginePrivate.h”的完整路径。请问这个什么原因呢?项目属性里面已经包含了路径D:/Epic Games/4.12/Engine/Source/Runtime/Engine/Private,为何还需要完整路径才能调用呢?


说明:这个工程计划用来搞一个多轮车辆的,在虚幻4官方论坛看到了老外做的类继承,可惜自己模仿不来。附上原贴地址:
https://forums.unrealengine.com/showthread.php?93866-Fixing-the-Vehicle-class-in-UE4-starting-with-NWheel-implementation&p=434618


eeooyi | 2016-6-14 00:46:20 | 显示全部楼层
试试把项目的UEProject文件重新编译一下看看
回复 支持 反对

使用道具 举报

scorpio_b | 2016-6-14 08:07:55 | 显示全部楼层
eeooyi 发表于 2016-6-14 00:46
试试把项目的UEProject文件重新编译一下看看

谢谢!可是我并没有对源代码做出任何改变啊?另外用的是Epic Games Launcher下载的,看来只有在源码里面重新编译了
回复 支持 反对

使用道具 举报

lein | 2016-6-18 19:16:32 | 显示全部楼层
本帖最后由 lein 于 2016-6-18 19:18 编辑

把#include “EnginePrivate.h” 这行放在 #include "****.generated.h" 这行的前面(交换下现在的顺序)试试?
因为编译的时候头文件会先被UE4预处理一遍(类似QT那种)
回复 支持 反对

使用道具 举报

scorpio_b | 2016-6-20 00:12:53 | 显示全部楼层
lein 发表于 2016-6-18 19:16
把#include “EnginePrivate.h” 这行放在 #include "****.generated.h" 这行的前面(交换下现在的顺序)试 ...

谢谢提醒,这个一直注意的。
回复 支持 反对

使用道具 举报

Someday | 2016-6-25 15:29:56 | 显示全部楼层
EnginePrivate.h 不是对外用的, 它位于引擎的 Private 目录下,你用 Engine.h 代替。另外注意,不要将这个包括大量其它.h的头文件放到你的 VehicleMovementComponentNW.h 使用,这等于敞开了一扇大门。在你的头文件中声明其它类时,应该先考虑使用前置声明,其次是仅包括要声明类的.h头文件。像 Engine.h 这种仅用于 cpp 中。
回复 支持 反对

使用道具 举报

scorpio_b | 2016-6-26 16:25:08 | 显示全部楼层
Someday 发表于 2016-6-25 15:29
EnginePrivate.h 不是对外用的, 它位于引擎的 Private 目录下,你用 Engine.h 代替。另外注意,不要将这个 ...

谢谢解答。如果想调用引擎的Private目录下的一些文件,该怎么办呢?顺便问下有没有C++的自己继承出单独一个类的案例可供学习呢?官方给出的Demo都是调用已有的类啊
回复 支持 反对

使用道具 举报

Someday | 2016-6-28 12:03:16 | 显示全部楼层
Private内的.h文件比较少,你要到public目录下找include private目录下.h的头文件。
你创建一个基于C++车辆模板的工程看看吧,我记得有两套,一套是高级的车辆系统模板
回复 支持 反对

使用道具 举报

scorpio_b | 2016-7-4 22:13:10 | 显示全部楼层
Someday 发表于 2016-6-28 12:03
Private内的.h文件比较少,你要到public目录下找include private目录下.h的头文件。
你创建一个基于C++车辆 ...

嗯 我这两个的C++工程我都练习过了,用空的C++工程创建过。现在多轮车辆不会搞,用蓝图也搞不出来。根据官网的教程,做了蓝图的练习,可是蓝图多轮添加也不行,如图,不知道为何。小熊猫答应看看的,可是一直没空……
烦劳someday大神帮我看看吧 谢谢啦
未标题-2.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12

主题

40

回帖

1276

积分

高阶编码师

积分
1276