Sounds to me like you are using one pointer and creating multiple objects with new and not deleting the old ones which is a memory leak and should be impossible to access the old ones unless you use an array to store the memory addresses. What you should do is just create an array of the objects then when you are done with them delete them. You can then use the offset( position in array ) to access the elements:
Module *mod = new Module[5];
Or if you don't want to call the constructor right away you can use operator new and allocate raw memory then later on call the constructor when you actually need the object.