Evo dela trenutnog koda:
template <typename T>
class LinearAdvancePolicy
{
public:
static bool advance(T& currentValue, const T& start, const T& end, float duration,
float elapsedTime)
{
float pos = elapsedTime / duration;
currentValue = (T)(start + (end - start)*pos);
return currentValue >= end;
}
};
template <typename ValueType,
template <typename> class AdvancePolicy = LinearAdvancePolicy >
class AnimationController
{
.....
void update(float dt)
{
bool bIsFinished = AdvancePolicy<ValueType>::advance(...);
....
}
};
Kapiram beneficije koriscenja template template parameters.
Ono sto ne razumem je kako da napisem template za AnimationController ako u policy klasu dodam jos jedan template parametar:
// namera je da u policy dodam parametar koji odredjuje da li je animacija reversed
template <typename T, bool bReversed>
class LinearAdvancePolicy { ... }
Kako sada prilagoditi template parametre za AnimationController?
U smislu:
template <typename ValueType,
template <typename, bool> class AdvancePolicy = LinearAdvancePolicy >
class AnimationController {...}
ali to ne radi...
Takodje, sta bi se desilo da to radi, onda bih instanciranje objekta morao da napisem ovako:
AnimationController<int, LinearAdvancePolicy<int, true> > m_animController;
Ovim koriscenje template template parameters gubi smisao posto explicitno navodim da je prvi parametar za LinearAdvancePolicy int....
Mozda je ovo i nemoguce implementirati ili mogu promeniti dizajn (da stavim bReversed u AnimationController) ali je glavno pitanje kako 'ubaciti' vise parametara u policy klasu kada host klasa ocekuje da policy primi preko template template parametra?