【发布时间】:2021-06-17 09:09:39
【问题描述】:
假设我有 3 个 cpp 类。
1- Afirst_class : 公共 AActor
2- Asecond_class : 公共 AActor
3- Uwidget_class : public UUserWidget
我正在尝试从 Uwidget_class 转换为 Asecond_class。之后从 Asecond_class 到 Afirst_class。
当我单击 UButton(在 Uwidget_class 中定义)时,OnClicked 动态执行相关功能。在这个函数中,我想强制转换 Asecond_class。让我想象一下:
Uwidget_class.h:
UPROPERTY(meta = (BindWidget))
class UTextBlock* button_text;
UPROPERTY(meta = (BindWidget))
class UButton* button_to_press;
public:
UPROPERTY()
Asecond_class * test_actor;
Uwidget_class.cpp:
void Uwidget_class::NativeConstruct(){
Super::NativeConstruct();
button_to_press-> OnClicked.AddUniqueDynamic(this,&Uwidget_class::on_click_cast_func);
}
void Uwidget_class::on_click_cast_func(){
test_actor = Cast<Asecond_class >(this); //problem might be "this" parameter?
if (test_actor ==nullptr)
{
UE_LOG(LogTemp, Warning, TEXT("DIDN'T CAST SUCCESSFULLY"));
}
else {
UE_LOG(LogTemp, Warning, TEXT("CASTED SUCCESSFULLY"));
}
}
test_actor 总是 nullptr。当我使用从 Asecond_class 到 Afirst_class 的相同转换时,它可以工作。当我使用 UUserWidget 时,我应该以不同的方式投射吗?
如何在 UUserWidget 中获取此 Asecond_class?提前致谢。
【问题讨论】:
-
从小部件投射到演员没有任何意义。为了使铸造起作用,所涉及的两个对象必须相同。例如,从演员到角色的演员只有在演员实际上是一个角色时才有效。唯一能让你知道的是关于你已经拥有的物体的更多信息。
标签: c++ casting unreal-engine4