[ glorius @ 27.09.2013. 14:00 ] @
Pokusavam da napravim klasu koja koristi policy based dizajn pomocu templates. 'Host' klasa je AnimationController koja koristi policies za advance animacije. Drugim recima, u policy klase smestam logiku za increment current frejma animacije dok AnimationController vodi evidenciju o ellapsed time, duration itd. Evo dela trenutnog koda: Code: 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: Code: // 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: Code: 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? |