What if instead of:
AttackManager->GetDefaultObject()->SetCurrentPlayerAttacking(playerAttacking);
You used this:
AttackManager->SetCurrentPlayerAttacking(playerAttacking);
Just trying to make sure you’re really accessing the same AttackManager instance with the getter method, as you do with the setter. Because I see no other way how the pointer could be null.