Interface in C++ to blueprint problem

So, I have an interface in C++:

UINTERFACE(BlueprintType)
class MYPROJECT_API UHudInterface : public UInterface
{
	GENERATED_UINTERFACE_BODY()
};

class MYPROJECT_API IHudInterface
{
	GENERATED_IINTERFACE_BODY()
public:
	UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, Category = "HudInterface") bool OpenMenu(EMenus menu);
};

This shows up in the editor just fine. I then have a blueprint that has this interface:

That works just fine as well. However, if I try to go back to C++ and grab the hud from the player controller:

void AMainGameState::Test()
{
    APlayerController * playerController = UGameplayStatics::GetPlayerController(this, 0);
    IHudInterface * hud = Cast<IHudInterface>(playerController->GetHUD());
}

hud will always end up as null. My question is, is it even possible to create an interface in C++, have a blueprint use it, and then reference the interface back in C++?

Answered my own question: No, it’s not possible. So what I did instead is I made a class that extended directly from AHUD, then made the blueprint class extend from that class. In there, I had a UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) function with no body. It showed up as an event in the blueprint class, and when I called it from C++ code, it called the event in the blueprint correctly.