Every class derived from AActor can use GetWorld() to access the World it is currently spawned in:
including APlayerController, AHUD, AGameMode, AGameState, and so on.
You can call GetWorld() in UGameViewport to get the World it’s related to at the moment, you can call GetWorld() in UGameInstance.
I think it’s enough to not worry about getting it in whatever place you need. I can’t check now, but as I remember GEngine is a static, to also get a GetWorld(), so you are doing it correctly.
The only thing that comes to my mind when considering your problem, is the place you invoke your GetWorld() in. Isn’t it a constructor of some class? Try to do it in BeginPlay() overridden method.