Now what I don’t quite get as a c++ noob is why the accessor is ‘.’ and not ‘->’? Is this not a pointer UStaticMeshComponent and thus requires the -> ? And even if I deref the pointer in the arguments as such: UStaticMeshComponent &Blah_MainPhysBodyComponent, I still need to use Blah_MainPhysBodyComponent.memberwhatever();
To clear up tyoc213’s answer, you are declaring the variable in your class as a pointer, and setting it correctly via CreateDefaultSubobject, but your function takes the object itself, rather than a pointer (indicated by the lack of a * preceding the variable name). This will cause problems, because passing the object by value instead of by pointer(or reference) implicitly copies the object. This means that all changes you make will not affect the original object, but rather the local copy being deleted at the end of the function.
Change “UStaticMeshComponent Blah_MainPhysBodyComponent” to “UStaticMeshComponent* Blah_MainPhysBodyComponent”, and the “.” accessor to “->”, and you should be fine.
EDIT: Although really, you should find a name for your function variable that isn’t the name of the class variable.