Well, in this case you're just typing a pointer the struct contains as another of this struct, so the struct doesn't recursively hold instances of itself, just a memory address.
__________________
Stop intellectual property from infringing on me
The compiler needs to be able to determine the size of an object if you create one. So you can't instantiate an object within a class the way you described. However, in your code you are creating a pointer to a class object. In that case you don't need to know the size of the actual object in advance. So this code is valid.