It sounds like your setup is fine: a forward declaration in the GameInstance header and including opposing headers in each of your CPP files.
Your biggest issue is that you really, really shouldn’t use anything derived from UObject (including AActors) by value like that. Your GameInstance should have an array of pointers (TArray<AWSSalesPoint*>
) instead and your point would do .Add(this);
instead.