Compartir a través de


Trabajar con código de Visual C++ (Diseñador de clases)

El Diseñador de clases muestra una superficie de diseño visual denominada diagrama de clases que proporciona una representación visual de los elementos de código de su proyecto. Puede usar los diagramas de clases para diseñar y visualizar clases y otros tipos en un proyecto.

El Diseñador de clases admite los elementos de código de C++ siguientes:

  • Clase (se asemeja a una forma de clase administrada, salvo que puede tener varias relaciones de herencia)

  • Clase anónima (muestra el nombre generado de la Vista de clases para el tipo anónimo)

  • Clase de plantilla

  • Struct

  • Enum

  • Macro (muestra la vista de la macro posterior al proceso)

  • Definición de tipos

NotaNota

Esto no es igual que el diagrama de clases UML, que puede crear en un proyecto de modelado.Para obtener más información, vea Diagramas de clases de UML: Referencia.

Solucionar problemas de resolución de tipo y de presentación

Ubicación de archivos de código fuente

El Diseñador de clases no realiza un seguimiento de la ubicación de los archivos de código fuente. Por lo tanto, si modifica la estructura del proyecto o mueve los archivos de código fuente del proyecto, el Diseñador de clases puede perder el control del tipo (sobre todo del tipo de origen de una definición de tipos, de las clases base o de los tipos de asociación). Podría recibir el error siguiente: Class Designer is unable to display this type. Si se da el caso, vuelva a arrastrar el código fuente modificado o cambiado de posición hasta el diagrama de clases para que vuelva a mostrarse.

Actualización y problemas de rendimiento

En los proyectos de Visual C++, un cambio en el archivo de código fuente podría tardar de 30 a 60 segundos en aparecer en el diagrama de clases. Este retraso también podría producir el error siguiente en el Diseñador de clases: No types were found in the selection. Si recibe un error de este tipo, haga clic en Cancelar en el mensaje de error y espere a que el elemento de código aparezca en la Vista de clases. Tras ello, el Diseñador de clases debe poder mostrar el tipo.

Si un diagrama de clases no se actualiza con los cambios que ha realizado en el código, es posible que deba cerrar el diagrama y abrirlo de nuevo.

Problemas de resolución de tipo

Es posible que el Diseñador de clases no pueda resolver tipos por las razones siguientes:

  • El tipo está en un proyecto o ensamblado al que no se hace referencia desde el proyecto que contiene el diagrama de clases. Para corregir este error, agregue una referencia al proyecto o ensamblado que contiene el tipo. Para obtener más información, vea Cómo: Agregar o quitar referencias utilizando el cuadro de diálogo Agregar referencia.

  • El tipo no está en el ámbito correcto, por lo que el Diseñador de clases no puede encontrarlo. Asegúrese de que no falta en el código una instrucción using, imports o #include. Asegúrese también de no haber movido el tipo (o un tipo relacionado) fuera del espacio de nombres donde estaba ubicado originalmente.

  • El tipo no existe (o se ha marcado como comentario). Para corregir este error, asegúrese de no haber eliminado ni marcado como comentario el tipo.

  • El tipo se encuentra en una biblioteca a la que hace referencia una directiva #import. Una posible solución alternativa es agregar el código generado (archivo .tlh) manualmente a una directiva #include en el archivo de encabezado.

Este es el error más probable que aparecerá cuando surja un problema de resolución de tipo: Code could not be found for one or more shapes in class diagram '<element>'. Este mensaje de error no indica necesariamente que el código está en error. Sólo indica que el diseñador de clases no puede mostrar el código. Pruebe las medidas siguientes.

  • Compruebe que existe el tipo. Asegúrese de que no ha hecho ninguna observación respecto involuntariamente out ni ha quitado el código fuente.

  • Asegúrese de que el Diseñador de clases admite el tipo que escribió. Vea Limitaciones para los elementos de código de C++.

  • Intente resolver el tipo. El tipo puede estar en un proyecto o ensamblado que no se hace referencia desde el proyecto que contiene el diagrama de clases. Para corregir este error, agregue una referencia al proyecto o ensamblado que contiene el tipo. Para obtener más información, vea Cómo: Agregar o quitar referencias utilizando el cuadro de diálogo Agregar referencia.

  • Asegúrese de que el tipo está en el ámbito correcto de modo que el Diseñador de clases puede encontrarlo. Asegúrese de que no falta el código using, imports, o instrucción #include . Asegúrese también de no haber movido el tipo (o un tipo relacionado) fuera del espacio de nombres donde estaba ubicado originalmente.

Solucionar otros mensajes de error

Puede encontrar ayuda para solucionar problemas referentes a errores y advertencias en los foros públicos de Microsoft Developer Network (MSDN). Vea Foro del Diseñador de clases de Visual Studio.

Limitaciones para los elementos de código de C++

  • Cuando se carga un proyecto de Visual C++, el Diseñador de clases funciona en modo de sólo lectura. Puede cambiar el diagrama de clases, pero no puede guardar los cambios del diagrama de clases en el código fuente.

  • El Diseñador de clases solo admite semántica nativa de C++. En los proyectos de Visual C++ que se compilan en código administrado, el Diseñador de clases solo presentará elementos de código que sean tipos nativos. Por lo tanto, puede agregar un diagrama de clases a un proyecto, pero el Diseñador de clases no le permitirá ver los elementos cuya propiedad IsManaged esté establecida en true (es decir, tipos de valor y tipos de referencia).

  • En los proyectos de Visual C++, el Diseñador de clases solo lee la definición del tipo. Por ejemplo, suponga que define un tipo en un archivo de encabezado (.h) y que define sus miembros en un archivo de implementación (.cpp). Si llama a "Ver diagrama de clases" en el archivo de implementación (.cpp), el Diseñador de clases no mostrará nada. Otro ejemplo: si llama a "Ver diagrama de clases" en un archivo .cpp que usa una instrucción #include para incluir otros archivos pero no contiene ninguna definición de clase real, el Diseñador de clases tampoco mostrará nada.

  • Los archivos IDL (.idl), que definen interfaces COM y bibliotecas de tipos, no se muestran en diagramas a menos que estén compilados en código nativo de C++.

  • El Diseñador de clases no admite funciones y variables globales.

  • El Diseñador de clases no admite las uniones. Se trata de un tipo especial de clase en que la memoria asignada consta solo de la cantidad necesaria para el miembro de datos más grande de la unión.

  • El Diseñador de clases no muestra tipos de datos básicos como int y char.

  • El Diseñador de clases no muestra tipos definidos fuera del proyecto actual si el proyecto no tiene referencias correctas a esos tipos.

  • El Diseñador de clases puede mostrar tipos anidados pero no las relaciones entre un tipo anidado y otros tipos.

  • El Diseñador de clases no puede mostrar tipos que sean tipo void o que deriven de un tipo void.

Vea también

Tareas

Información adicional sobre los errores del Diseñador de clases

Conceptos

Clase de Visual C++ en el Diseñador de clases

Estructuras de Visual C++ en el Diseñador de clases

Enumeraciones de Visual C++ en el Diseñador de clases

Definiciones de tipos de Visual C++ en el Diseñador de clases

Otros recursos

Diseñar y ver clases y tipos

Trabajar con clases y otros tipos (Diseñador de clases)

Trabajar con diagramas de clases (Diseñador de clases)

Diseñar clases y tipos (Diseñador de clases)