I assume you read about inversion of control or dependency injection somewhere.
Guess what you want to do is write a provider (like with Google's Guice in Java), "inject" an INotificationSender and let the IoC framework use the settings file to figure out the correct implementation!?
There are some libraries that make IoC in C++ possible.
I really enjoyed working that way in Java ... writing three providers and using different annotations when I want to inject a concrete implementation.
I don't think the way the C++ ones work is very pretty. In C++ you might want to find a different way.
You can search for "C++ and IoC" and follow the links. Many libraries have examples of how they are used.
http://code.google.com/p/hypodermic/ - seems too simple for what you have in mind, but maybe it can be used somehow
http://code.google.com/p/pococapsule/ - might be something ... have not really done much research yet
There are articles about manually writing code with DI in mind, like this one:
The code there seems like something I could get used to ... and there is a link to an example implementation near the end of the article.
Another article that clarifies quite a few words and concepts pretty well (but careful ... it is C# / .NET):
Edited by DareDeveloper, 22 August 2013 - 11:03 AM.