Unless you have a specific reason to use a pointer (for instance, if you're creating a bunch of instances of this struct and storing the pointers in a vector), it's usually better not to.
There are a few reasons for this:
- You have to remember to delete the thing the pointer is pointing to, or you'll end up with memory leaks.
- You have to dereference the pointer before you can use the thing it's pointing to.
- If you do something to change the pointer (like add a value to it, when you meant to add a value to a data member, instead), you'll get a pointer that's pointing to who knows what.
In general, I prefer to use objects on the stack instead of pointers to objects, if for no other reason than to make it easier for myself by not having to worry about these things.
Regarding your (apparently deleted) comment on class vs struct, they're essentially the exact same thing. They differ slightly syntactically (for example, members of a class are private by default, while members of a struct are public by default), but there's no real difference, as far as I know. In addition, a pointer doesn't care what sort of thing it's pointing to; it's in essence just two numbers: a location in memory, and the expected size of the thing at that location.