Estoy tomando una clase de C++, y mi maestro se menciona de pasada que la typename palabra clave existía en C++ (en oposición al uso de la class palabra clave en una declaración de la plantilla), para la compatibilidad hacia atrás con «C plantillas.»

Esto me dejó alucinado. He nunca visto u oído decir de cualquier cosa como C++plantillas (excepto, quizás, el preprocesador… y eso no es realmente la misma cosa en todos) en ANSI C. Así que, ¿me olvido de algo enorme en algún lugar, o es una realidad esotérica extensión por gcc o algo, o es mi maestro fuera de base?

  • Usted puede obtener un nuevo maestro?
  • Para ser honesto, me gusta mucho este maestro. Es por mucho el mejor ‘programación’ maestro que he conocido en esta universidad. Voy a evitar la especificación de que la universidad (y que los maestros), por su bien.
  • (Para dar una comparación, uno de los maestros anteriores, la enseñanza de un C curso, nos enseñó a «inicio de cada archivo con la línea de void main () {. Hay tantas cosas mal con eso, yo no sé ni por donde empezar… la más evidente de ser, para mí, lo que main() un void tipo de retorno. Que tan onu-UNIX )-:< me enfermo.)
  • Considere la posibilidad de cambiar la universidad, a continuación,
  • No hay otros donde estoy. De todos modos, me estoy tomando una clase, la mayoría de aburrimiento. Y sólo porque él cometió un error, no significa que él es inútil como un maestro d-:
  • como un chico de abajo dice, tal vez con «c plantillas», se refiere a las plantillas con parámetros con los tipos de C (int por ejemplo).

InformationsquelleAutor ELLIOTTCABLE | 2010-02-25

7 Comentarios

  1. 27

    Creo que su maestro está fuera de la base.

    Ver Stan Lippman del post: ¿por Qué C++ Soporta tanto la Clase y el Nombre de los Parámetros de Tipo para la verdadera razón por la que C++ compatible con ambos.

    • Un millón de gracias, que despejó derecha arriba.
    • La gran pregunta por el camino.
    • Gracias, hombre. Casi me empujó sobre la reputación de 100, por último! d-;
    • El Lippman post es un buen uno para responder tanto a esta pregunta y explica por qué typename a veces se necesita en otros contextos.
  2. 6

    Quizás la frase de su maestro fue el objetivo para el que fue a lo largo de las líneas de «…para la compatibilidad hacia atrás con C tipos«, es decir, reconociendo el problema que template<class T> es engañosa cuando T es un estilo C integrado en el tipo como char o int, como otros han dicho. Pero eso no es una clase! 🙂

    Un tiempo un par de GCC que las personas estaban lo que sugiere que hacer la plantilla de la maquinaria disponible para el compilador de C sería una buena manera de implementar C99 del <tgmath.h>, pero que no parece haber llegado a nada.

  3. 3

    Su maestro es hacer las cosas. No hay tal cosa como plantillas en C. La typename palabra clave existe por dos razones:

    1. Tiene más sentido decir template<typename T> de template<class T> desde T puede no ser la clase de tipos como int o double.

    2. Se puede utilizar para resolver el análisis de las ambigüedades en las declaraciones como A::B * foo;. ¿Esto declara una variable denominada foo, o es una multiplicación de expresión? (Respuesta: Se analiza como el último. Para hacer una declaración de escribir typename A::B *foo; que le dice al compilador para interpretar A::B como un tipo de nombre, no el nombre de una variable.)

    Ver http://pages.cs.wisc.edu/~driscoll/typename.html para una explicación detallada.

  4. 0

    Esto no parece correcto. el nombre no es una palabra reservada en C.

    Tal vez misspoke/recordada y estaban pensando en «C con Clases».

  5. 0

    Quiero decir que C no tienen un nativo de la plantilla de cosas, sin embargo, usted puede hacer que funcione bien con algún tipo de Metaprogramación, echa un vistazo alrededor de la web encontrarás cómo…

    Otra cosa importante a decir es que C es un lenguaje de programación de propósito general, por lo que un montón de cosas como la Orientación a Objetos, plantilla y algunas otras cosas que se pueden hacer con un poco más de esfuerzo.

    Proyectos como Gnome son la prueba de que se puede hacer y muy bien.

    P. S.: lo Siento por mi inglés terrible!!!

Dejar respuesta

Please enter your comment!
Please enter your name here