【问题标题】:How to add types and classes in existing engine modules?如何在现有引擎模块中添加类型和类?
【发布时间】:2022-01-22 08:08:40
【问题描述】:

我一直在尝试在公共标头中将测试类添加到引擎模块之一,使用标准方法将新类/函数公开给其他模块。 但是,每次我在编辑后尝试从源代码重建引擎时,构建失败并出现各种错误,其中有多个错误表明已编辑的标题中存在类的重新定义。其他错误位于完全不同的文件中,其中一些宏将“未定义的标识符”呈现给编译器,仅举几例其他错误。

我从克隆开始,并分叉了 4-27 分支,如果我不进行任何编辑,它就会正确构建;一旦我向源添加任何内容,它就无法构建。

这是我添加到头文件 WindowsApplication.h(模块 ApplicationCore 中的公共头文件)中的类:

//..
//..untouched code lines.
//..
#define WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION 1
//..
//..other code lines(untouched).
//..
//These lines are added to the existing class FWindowsApplication:
class APPLICATIONCORE_API FWindowsApplication
    : public GenericApplication
    , public IForceFeedbackSystem
{
#if WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION 
    friend class FXInputProxy_;
#endif // WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION 
//..
//..other code lines(untouched).
//..
}
#if WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION 
class APPLICATIONCORE_API FXInputProxy_
{
public:
    FXInputProxy_() = delete;
    FXInputProxy_(FWindowsApplication* InWinApp);
private:
    FWindowsApplication* WinApp = nullptr;
    XInputInterface* XInput = nullptr;
public:
    void Poll(short InRaw[]);
};
#endif // WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION

然后在头文件的源代码里面(WindowsApplication.cpp), 我添加了这些代码行:

#if WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION
FXInputProxy_::FXInputProxy_(FWindowsApplication* InWinApp)
{
//Function not yet implemented!
}
void FXInputProxy_::Poll(short InRaw[])
{
//Function not yet implemented!
}
#endif // WINDOWS_APPLICATION_H_MY_PROJECT_ADDITION

【问题讨论】:

    标签: c++ unreal-engine4


    【解决方案1】:

    答案其实很简单。不包括 XInputInterface 类,它需要在使用前进行前向声明。添加关键字“class”导致构建成功。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 2015-11-23
      • 2011-03-14
      • 2018-11-29
      相关资源
      最近更新 更多