Well, there is no built-in reflection system in C++, which means that you cannot call a function (or class method) only knowing the name of that function without additional effort. This means that unlike, e.g., C#, you cannot write a program like this one:
1 2 3 4 5 6 7 8 9 10
|
void f();
void g();
/* ... */
void main()
{
std::string methodName;
std::cin >> methodName;
// Now you have the method name in your variable but you cannot use it to call a function
}
|
This is due to the whole compilation-linking process where method names as well as all other symbolic information is dropped. This allows the compiler to perform various optimizations (e.g. inlining function calls).
Anyway, my first question would be - are you sure you want to use C++ for your task? Perhaps you'd be better off with built-in reflection mechanisms?
If you want to stick with C++, then you should think about the distribution of work between you and the people who will provide the "business logic". I.e. can you make your code a library that then will be used by the third party? Or perhaps, you will make a closed-source application that will be able to be extended with some sort of plugin system? This might be a good starting point for plugins:
http://www.drdobbs.com/cpp/building-your-own-plugin-framework-part/204202899
Again, I'm not very experienced with other languages, but I'm pretty sure that implementing a flexible and extensible plugin architecture will be easier with Java or C# than with C++. I might be wrong here, but this is my gut feeling.
Anyway, your question seems too general to be answered without you providing more details. And even if you provide them there might not be a single "correct" answer.
Hope this helps at least a little bit :)