UE中的Cast和CastChecked

        UE中的 Cast 方法有两种常见的形式:Cast(Object)CastChecked(Object)

1. Cast(Object)

        这是一种安全的类型转换方法,如果转换成功,它返回一个非空的指针或引用,否则返回 nullptr。这种类型的转换主要用于处理基类和派生类之间的关系。

AActor* MyActor = ...; 
AMyCharacter* MyCharacter = Cast(MyActor); 
if (MyCharacter) { 
    // 转换成功,可以使用 MyCharacter 对象 
} 
else {
    // 转换失败,MyActor 不是 AMyCharacter 类型的对象 
}

2. CastChecked(Object)

        这是一种类似的类型转换方法,但它在转换失败时会引发断言(Assertion),因此更适合在开发和调试阶段使用。在运行时,如果转换失败,它会触发断言并在编辑器中停止程序执行。

AActor* MyActor = ...;
AMyCharacter* MyCharacter = CastChecked(MyActor); 
// 如果转换失败,这里会引发断言并停止程序执行

示例:

        考虑一个基类 AAnimal 和两个派生类 ADogACat 的情况:

class AAnimal : public AActor { 
// ... 
}; 
class ADog : public AAnimal { 
// ... 
}; 
class ACat : public AAnimal { 
// ... 
};

        在代码中,你可以使用 Cast 方法进行类型转换:

AAnimal* Animal = ...;

ADog* Dog = Cast(Animal);
if (Dog)
{
    // 对象成功转换为 ADog 类型
}
else
{
    // 对象不是 ADog 类型
}

ACat* Cat = CastChecked(Animal); // 这里会引发断言,因为 Animal 不是 ACat 类型

        这样,你可以根据需要在不同的类之间进行安全的类型转换。确保在实际使用中考虑到可能的类型转换失败的情况。

你可能感兴趣的:(UC++,UC++)