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.
If LibreOffice wants to be taken seriously, they need to hire some UX designers. The UI is horrible, inconsistent and looks like what it is - a clone of Microsoft Office 2000. Look at what MuseScore has achieved with version 4 or the upcoming version of Audacity. MuseScore has now surpassed many commercial offerings in terms of UX.
Just look at the screenshot in this article. A Win9x style column header slapped on a Mac UI. Button sizing and text is all over the place. It is clear that absolutely no care was taken with the UI.
According to this there is a Beta build that you could try if you wanted: https://kubuntu.org/news/plasm...eta1-available-for-testing/
But like they say, since it's in Beta you might want to wait for their next official release which I think is scheduled for October.
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