I mean can you make a copy of the class like in my example (except change loadset to dataset_loader). Will that compile?

If not, then you need to have an array (or vector) of pointers, then use new to allocate your dataset_loader objects and save the pointer in the array (or vector). Even if you can copy the object this might be a good choice for efficiency reasons. However it is more error prone because you have to manage the memory.