This has been stumping me rather thoroughly for a good portion of the day today so I'd appreciate it if anyone can offer any help.
I basically need to be able to create a new instance of an arbitrary class using a string assigned to be its name. An example of what I'd like to be able to do is:
SomeBaseType *x = new mapStringObjectName["someClassNameString"]; //mapStringObjectName is std::map<string, ?not sure what this one should be?>
I've tried a bunch of different ways to do this and I'm trying to avoid having to just make a large switch statement to do this, but its just eluding me.
For example, "document" would create an instance of CDocument and "someotherthing" would create an instance of COtherThing, both of those would derive from CObject.
I'm thinking I may need each derivative to have its own CreateInstanceOfMe function to be called and a static initializer to add itself to the map but I'm not sure how to go about that.
Question
fhpuqrgrpgvirzhpujbj
This has been stumping me rather thoroughly for a good portion of the day today so I'd appreciate it if anyone can offer any help.
I basically need to be able to create a new instance of an arbitrary class using a string assigned to be its name. An example of what I'd like to be able to do is:
I've tried a bunch of different ways to do this and I'm trying to avoid having to just make a large switch statement to do this, but its just eluding me.
For example, "document" would create an instance of CDocument and "someotherthing" would create an instance of COtherThing, both of those would derive from CObject.
I'm thinking I may need each derivative to have its own CreateInstanceOfMe function to be called and a static initializer to add itself to the map but I'm not sure how to go about that.
Link to comment
https://www.neowin.net/forum/topic/964230-c-map-strings-to-class-types/Share on other sites
2 answers to this question
Recommended Posts