KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to get my head around applying template programming (and at some future point, template metaprogramming) to real-world scenarios. One problem I am finding is that C++ Templates and Polymorphism don't always play together the way I want. My question is if the way I'm trying to apply template programming is improper (and I should use plain old OOP) or if I'm still stuck in the OOP mindset. In this particular case, I am trying to solve a problem using the strategy-pattern. I keep running into the problem where I end up wanting something to behave polymorphically which templates don't seem to support. OOP Code using composition: class Interpolator { public: Interpolator(ICacheStrategy* const c, IDataSource* const d); Value GetValue(const double); } void main(...) { Interpolator* i; if (param == 1) i = new Interpolator(new InMemoryStrategy(...), new TextFileDataSource(...)); else if (param == 2) i = new Interpolator(new InMemoryStrategy(...), new OdbcDataSource(...)); else if (param == 3) i = new Interpolator(new NoCachingStrategy(...), new RestDataSource(...)); while (run) { double input = WaitForRequest(); SendRequest(i->GetValue(input)); } } Potential Template Version: class Interpolator<class TCacheStrategy, class TDataSource> { public: Interpolator(); Value GetValue(const double); // may not be the best way but void ConfigCache(const& ConfigObject); // just to illustrate Cache/DS void ConfigDataSource(const& ConfigObject); // need to configured } //Possible way of doing main? void main(...) { if(param == 1) DoIt(Interpolator<InMemoryStrategy, TextFileDataSource>(), c, d); else if(param == 2) DoIt(Interpolator<InMemoryStrategy, OdbcDataSource>(), c, d) el
Tags (comma-separated)
Save Edits
Cancel