Wait a moment, if use struct (stack) you can NOT use polymorphism right?
So why should you hava a struct derived from a class?. Just for Variables??
The proper way in OOP is to use pointers of classes for Objects and structs or class in stack (not pointers) for Datatypes.
An Object is Class Instance it has state and behavior and it has IDENTITY. (Pointers implement this perfectly, whey you work in the stack (without pointers DON'T) This last one is I think the problem that you intialy had, stack object hasn't identity, his identity loosed at the end of the actual scope. (pointer don't, -heap).
A datatype it just a "data storage" convenince becasue it make easy modifigin code if you add new parameter to for example a function.
For "gameinfo" actually i'm using a singleton that handles graphic aspect and abstracts me from irrlicht (kinda hard abstrac 3d engines :~).
There are other benefits for pointers like Identity, polymorphism, faster collections from objects. etc.
The only discution about them is that this is not java, so we have not garbage colector
. So some people have problem with memory.
So you can work with struct or class in stack and try to simplify yoursefl and loose or the pointer advantages. Or you use clases (with pointers) and take a little care with (the only problem) deletes.
Besides you can use some library like Boost for pointer counter.
It hope it helps.