【问题标题】:Unreal Engine 4.18.2 "no default constructor exists for class "UUserWidget""虚幻引擎 4.18.2“类“UUserWidget”不存在默认构造函数”
【发布时间】:2018-01-20 17:28:08
【问题描述】:

我在编写 UUserWidget 继承类的构造函数时遇到了一个奇怪的问题。该问题仅在此类中出现(在其他几个中检查)。代码: .h.cppUserWidget.hCompilingResult

【问题讨论】:

  • 有时你的课程应该是DefaultConstructible: en.cppreference.com/w/cpp/language/default_constructor
  • 似乎不起作用 - 结果相同
  • 您是否收到编译器错误?目前还不太清楚你的问题是什么。也许你可以告诉我们编译器在喊什么。
  • 哦,对不起 - 刚刚忘记附上这张照片

标签: c++ constructor widget unreal-engine4


【解决方案1】:

尝试将此添加到您的基类 (UUserWidget):

UUserWidget();

那是因为这个类没有默认构造函数。默认构造函数是不带参数的构造函数。

【讨论】:

  • 已经有构造函数UUserWidget(const FObjectInitializer &ObjectInitializer);为什么不是默认构造函数?
  • 因为默认构造函数不带任何参数,所以 UUserWidget(const FObjectInitializer &ObjectInitializer);不能是默认构造函数。
  • 你确定吗?我几乎可以肯定这是导致你的问题的原因......你的 UUserWidget 类应该是这样的: public: UUserWidget();然后是 UUserWidget(const FObjectInitializer &ObjectInitializer);
  • 你有一个链接错误,其中大部分是由于包含错误的类引起的,这不再是构造函数了。
  • @Sheim 这更像是一个特定的虚幻引擎问题。您不想向引擎添加代码(如前所述)。本质上的区别是,如果你以 Actor 为例,它有一个默认的 () 构造函数。而 UUserWidget 没有。因此,您只需要确保使用 FObjectInitializer 构造函数即可。应该做同样的工作。也许这是虚幻引擎在升级到允许空构造函数期间的疏忽。 MyWidget::Mywidget(const FObjectInitializer& ObjectInitializer) : UUserWidget(ObjectInitializer){
【解决方案2】:

添加默认构造函数“UUserWidget();”

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多