An instance of Engine is instantiated in main.cpp. Engine has as its member an instance of BasicSearch. The search is then initialized and run.
#include "Heuristics/simulated_anneal.cpp"
template<class T>
void Engine<T>::initialize_search()
{
// Other irrelevant codes omitted
switch(heuristic_type){
case h_simulated_annealing:
the_search =
new SimulatedAnneal<T>(running_time, r_interval, cp_interval);
break;
}
}