【问题标题】:Returning a const pointer throws a compile error in Unreal Engine?返回 const 指针会在虚幻引擎中引发编译错误?
【发布时间】:2020-04-08 21:01:08
【问题描述】:

我不太擅长 C++,所以如果这只是一个愚蠢的错误,我提前道歉。我试图将 XMLParser 暴露给虚幻引擎中的蓝图

使用 VS,代码不会显示任何内联编译错误。 (即任何地方都没有红线)但是,当我尝试编译时,出现以下错误:

Unrecognized type 'FXmlNode' - type must be a UCLASS, USTRUCT or UENUM

有问题的代码行:

UFUNCTION(BlueprintCallable)
        const FXmlNode* GetRoot();

我使用 XMLParser 模块更新了 Build.cs,并且可以访问各种 XML 类中的函数。但是,我觉得编译器无法识别它很奇怪。有谁知道这可能是什么原因造成的?

任何帮助将不胜感激。

【问题讨论】:

  • 为了能够使用FXmlNode*作为返回类型,您必须转发声明类型或#include定义类型的.h文件。
  • 您的错误是否与此类有关? forums.unrealengine.com/development-discussion/…
  • @RSahu 我只是尝试向前声明它以及确保包含文件存在。它仍然给出了同样的错误。
  • @darclader 这可能是问题所在。但是,我目前不确定。
  • 查看一些类似的问题,错误可能不仅仅与您提供的行有关。你能补充更多信息吗?你包括 XmlNode.h 吗?什么是 GetRoot()?根据这个文档:docs.unrealengine.com/en-US/API/Runtime/XmlParser/FXmlNode/…,没有标准的 GetRoot() 函数吗?

标签: c++ unreal-engine4


【解决方案1】:

一旦我真正考虑了一下,解决这个问题就相当简单了。 XmlNode 类不是 UCLASS 类型,我无法在蓝图中返回非 U* 类型,这是一个问题。 (因此为什么这个错误现在才有意义)

相反,我为 XmlNode 类本身创建了另一个包装类,并将其设为 UCLASS 类型。从那里开始包装 XmlNode 类相当容易,因为它主要返回字符串和其他节点引用。

【讨论】:

    【解决方案2】:

    UE4 中的反射系统不支持指向 USTRUCTS 的指针。您可以在代码中使用它,但不能将 USTRUCT 指针暴露给蓝图,您必须通过值或 const 引用返回结构

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-02
      • 2021-09-09
      • 2018-02-18
      • 2020-09-14
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      相关资源
      最近更新 更多