Esatto, magari scrivendolo in maniera un filo più compatta (e evitando di chiamare inutilmente la getComponent due volte):
codice:
if(AI_followTarget *ptr=test->getComponent<AI_followTarget>()) 
   ptr->test();
Tra l'altro, puoi ottimizzare anche la getComponent per evitare di fare due lookup nella mappa inutilmente:
codice:
        template <class T> T* getComponent(){
            map<type_index, IComponent*>::iterator it=
                this->mComponents.find(type_index(typeid(T)));
            if (it!=this->mComponents.end())
                return static_cast<T*>(it->second);
            else
                return NULL;
        }