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.

Related reading