<div dir="ltr">Hola Miguel Ángel,<div class="gmail_extra"><br><div class="gmail_quote">2015-04-08 0:53 GMT-04:00 Miguel Ángel Torres Fernández-Píñar <span dir="ltr"><<a href="mailto:miguelangeltorresfp@gmail.com" target="_blank">miguelangeltorresfp@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">uf, Steven, muchísimas gracias por todos tus apuntes.<div><br></div><div>Me sirve muchísimo todo esto y me hace darme cuenta del enorme camino que me queda aun por delante siquiera para ser un programador junior.</div><div><br></div></div></blockquote><div><br></div><div>Siempre estamos aprendiendo - incluso los más veteranos.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>De veras, muchas gracias por tu esfuerzo y tiempo desinteresado.</div><div><br></div></div></blockquote><div><br></div><div>De nada; para eso estamos :)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>De momento comparto esta duda en relación a lo que indicaste arriba.</div><div><br></div><div>He probado a usar :</div><span class=""><div><br></div><div><span style="font-size:12.8000001907349px"><font color="#3d85c6">// Get</font></span></div><div class="gmail_extra" style="font-size:12.8000001907349px"><font color="#3d85c6">const T & operator [] ( std::vector<T>::size_type index) const</font>;</div><div class="gmail_extra" style="font-size:12.8000001907349px"><br></div></span><div class="gmail_extra" style="font-size:12.8000001907349px">Pero me funciona si le coloco <b><i>typename </i></b>delante : ( aunque no entiendo muy bien todo eso )</div><div class="gmail_extra" style="font-size:12.8000001907349px"><br></div><div class="gmail_extra" style="font-size:12.8000001907349px"><div class="gmail_extra" style="font-size:12.8000001907349px"><font color="#3d85c6">// Get</font></div><div class="gmail_extra" style="font-size:12.8000001907349px"><font color="#3d85c6">const T & operator [] (typename std::vector<T>::size_type index) const;</font></div></div></div></blockquote><div><br></div><div>Sí. Tienes toda la razón del mundo; ha sido un descuido mío. Como a estas alturas el compilador no ha creado la clase 'std :: vector< int >', 'std :: vector< std :: string >', 'std :: vector< float >', o la que exista en su momento. Sin embargo, el compilador sí puede comprobar ciertos aspectos de la plantilla usando la gramática. El problema es que no sabe lo que es 'size_type' por lo que no puede determinar si su uso es correcto.</div><div><br></div><div>La solución es obligar al compilador a aceptar que la entidad que escribimos sí es el nombre de un tipo de dato anteponiendo el vocablo, 'typename'. Por lo tanto, si en cualquier momento escribes una expresión que se consideraría ambigua, lo más seguro es que escribiendo 'typename' se eliminaría tal ambiegüedad.</div><div><br></div><div><br></div><div>Por cierto, otro consejo es que definas tipos de datos dentro de la plantilla; por ejemplo,</div><div><br></div><div>template< typename T ></div><div>class pool<br>{<br>public:</div><div>  typedef T value_type;<br><div>  typedef T * pointer_type;</div><div><div>  typedef const T * const_pointer_type;</div></div><div><div>  typedef T & reference_type;</div><div>  typedef const T & const_reference_type;</div></div><div><br></div>  typedef std::vector<value_type> vector_type;</div><div>  typedef typename vector_type::size_type size_type;<br>  ...<br>};</div><div><br></div><div><br></div><div>Espero que esto te ayude.</div><div><br></div><div>Steven</div><div><br></div></div></div></div>