Template methods as in NOT C++ templates.
So, say that you would like to do some searching with different algorithms – Linear and Binary for instance. And you would also like to run those searches through some common routines so that you could, for instance, automatically record the time that a given search took and so on.
The template method pattern fills the bill beautifully. The only problem is that as far as I’ve managed to dig around, you can’t actually implement this behaviour via static methods with C++, ’cause you would also need to make the methods virtual(?) Which is of course a bit of a bummer because I don’t have any need to alter the state of the search object. I would just like to pin all the searching-thingies to its own namespace.
So the question is: Would one want to use something like function/method pointers instead? Or would one just use namespaces to do the job?
It’s pretty hard to live with this kind of (dare I say) limitations with C++, as something like this would be a breeze with Java.
Edit:
Oh yeah, and since this is a school assignment, the use of external libraries (other than STL) isn’t really an option. Sorry for the hassle.
I don’t see why you’d need the template method pattern.
Why not just define those algorithms as functors that can be passed to your benchmarking function?
and then call it like this:
Of course, another approach, which is a bit closer to what you initially wanted, could be to use CRTP (A pretty clever pattern for emulating virtual functions at compile-time – and it works with static methods too):
Then you can call the static functions:
As a final note, it might be worth mentioning that both of these approaches should carry zero overhead. Unlike anything involving virtual functions, the compiler is fully aware of which functions are called here, and can and will inline them, resulting in code that is just as efficient as if you’d hand-coded each case.