Anyadir funcionalidad usando templates
Publicado por Nelek (816 intervenciones) el 15/02/2007 09:26:18
Hola,
para poder optimizar mi proyecto y no tener que andar repitiendo metodos de lista implementados que tengo en varias clases, estoy ampliando una template de CMyList que encontre en Internet (http://www.codeproject.com/cpp/smartlist.asp).
Pero claro, es la primera vez que me pongo a crear funciones de "Template", me podriais decir si mis suposiciones son correctas??? De paso, que sirva tambien para resolver dudas que pueda tener la gente al respecto
// Remove a TYPE object from list
template<class TYPE, class ARG_TYPE>
inline void CMyList<TYPE, ARG_TYPE>::RemoveAtIndex(int nIndex)
{
ASSERT_VALID(this);
POSITION pos = FindIndex(nIndex);
ASSERT(pos);
RemoveAt(pos);
}
ASSERT_VALID(this);
Esto comprueba que la lista exista y que no este vacia a la vez, por lo que el if (IsEmpty ()) no es necesario
ASSERT(pos);
Esto comprueba que la posicion a la que se esta intentando acceder exite, es decir que existe un elemento en ese lugar y por lo tanto puede ser eliminado.
Pero ambas comprobaciones son solo en modo DEBUG y te lanzan la tipica ventana con un mensaje de error y las opciones, Ignorar (para seguir ejecutando el programa), Continuar (para ir al debugger) y Cancelar (para abandonar).
Luego pondre un boceto/prototipo de mi funcion para ver si me lo pudierais corregir.
Gracias por todo
para poder optimizar mi proyecto y no tener que andar repitiendo metodos de lista implementados que tengo en varias clases, estoy ampliando una template de CMyList que encontre en Internet (http://www.codeproject.com/cpp/smartlist.asp).
Pero claro, es la primera vez que me pongo a crear funciones de "Template", me podriais decir si mis suposiciones son correctas??? De paso, que sirva tambien para resolver dudas que pueda tener la gente al respecto
// Remove a TYPE object from list
template<class TYPE, class ARG_TYPE>
inline void CMyList<TYPE, ARG_TYPE>::RemoveAtIndex(int nIndex)
{
ASSERT_VALID(this);
POSITION pos = FindIndex(nIndex);
ASSERT(pos);
RemoveAt(pos);
}
ASSERT_VALID(this);
Esto comprueba que la lista exista y que no este vacia a la vez, por lo que el if (IsEmpty ()) no es necesario
ASSERT(pos);
Esto comprueba que la posicion a la que se esta intentando acceder exite, es decir que existe un elemento en ese lugar y por lo tanto puede ser eliminado.
Pero ambas comprobaciones son solo en modo DEBUG y te lanzan la tipica ventana con un mensaje de error y las opciones, Ignorar (para seguir ejecutando el programa), Continuar (para ir al debugger) y Cancelar (para abandonar).
Luego pondre un boceto/prototipo de mi funcion para ver si me lo pudierais corregir.
Gracias por todo
Valora esta pregunta


0