Quick answer: Unreal Blueprint cast on a Class Default Object returning null? CDO is an instance of the class, but cast paths assume runtime instances - use GetClass and IsChildOf for class queries.
Tooling BP queries CDO for a class. Cast to subclass fails.
Use IsChildOf
if (Class->IsChildOf(USpecific::StaticClass())) { ... }Class-level check; doesn't require instance cast.
Or get the right CDO
GetDefaultObject<USpecific>(): typed retrieval. No cast needed.
Avoid CDO interaction at gameplay time
CDO is for tooling and inspection. Gameplay should use real instances; cast paths designed for them.
“CDOs are class-level. Class-level checks beat instance casts.”
Document the class-vs-instance distinction in your engineering wiki. The confusion is common.