Título: [C++11] (Consulta) El compilador me pide que ponga la palabra typename Publicado por: class_OpenGL en 19 Febrero 2017, 17:39 pm Hola, muy buenas. Estoy haciendo una clase 'Vector' en C++ (tamaño dinámico, pero se asigna una sola vez). El caso es que uno de los constructores acepta una initializer_list, donde puedes poner todos los componentes del vector. Este es el código:
Código
LA pregunta es: ¿por qué el compilador me obliga a poner la palabra 'typename' antes de la declaración del iterador? Este es el error que sale si no la pongo: Código: ||=== Build: Debug in Reversi (compiler: GNU GCC Compiler (x86_64)) ===| No me entero muy bien de lo que me queire decir el compilador. Espero que me puedan ayudar. Muchas gracias! Título: Re: [C++11] (Consulta) El compilador me pide que ponga la palabra typename Publicado por: ivancea96 en 19 Febrero 2017, 19:15 pm Código initializer_list es un template. En el momento, el compilador no sabe si const_iterator es un campo static o si es un tipo. Para indicarle que es un tipo, se pone el typename. Título: Re: [C++11] (Consulta) El compilador me pide que ponga la palabra typename Publicado por: class_OpenGL en 19 Febrero 2017, 19:47 pm ¿por que el compilador no sabe hacer esa distincion? Gracias por la respuesta
Título: Re: [C++11] (Consulta) El compilador me pide que ponga la palabra typename Publicado por: ivancea96 en 19 Febrero 2017, 19:59 pm "No sabe" tal vez fuera una mala forma de expresarlo. Pueden darse casos en los que A<X>::b sea un tipo y casos en los que sea un valor. Simplemente, te obliga a ponerlo cuando usas el template. Evita malentendidos y, si por lo que fuera no es un tipo, te dará un error.
Título: Re: [C++11] (Consulta) El compilador me pide que ponga la palabra typename Publicado por: class_OpenGL en 19 Febrero 2017, 20:01 pm Ah vale. De acuerdo. Muchas gracias por tus rapidad respuestas
|