在类设计器中使用 Visual C++ 代码

更新:2007 年 11 月

类设计器将显示一个称作“类关系图”的可视设计图面,其中以可视形式提供了项目中的代码元素。 可以使用类关系图来设计和可视化项目中的类和其他类型。

在早期版本的 Visual Studio 中,类设计器仅支持托管语言(Visual C# 和 Visual Basic)。在 Visual Studio 2008 中,类设计器添加了对本机 C++ 代码的有限支持,旨在仅用于可视化和文档。

类设计器支持以下 C++ 代码元素:

  • 类(与托管类形状类似,只不过它可以具有多重继承关系)

  • 匿名类(显示类视图为匿名类型生成的名称)

  • 模板类

  • 结构

  • 枚举

  • 宏(显示宏的处理后视图)

  • Typedef

类型解析和显示问题疑难解答

源文件的位置

类设计器不会跟踪源文件的位置。因此,如果修改项目结构或移动项目中的源文件,则类设计器会失去对类型的跟踪(这一点对 typedef、基类或关联类型的源类型特别适用)。您可能会收到错误消息,如类设计器无法显示此类型。如果出现这种情况,请将已修改或重新定位的源代码再次拖动到类关系图中以重新显示它。

更新和性能问题

对于 Visual C++ 项目,让源文件中所做的更改出现在类关系图中可能需要 30 到 60 秒的时间。此延迟也可能导致类设计器引发错误在选定内容中没有找到类型。如果收到此类错误,请在错误消息中单击“取消”,并等待代码元素出现在类视图中。之后,类设计器应可以显示此类型。

如果类关系图未能使用您在代码中所做的更改进行更新,您可能需要关闭此关系图,并重新打开它。

类型解析问题

以下原因可能会导致类设计器无法解析类型:

  • 该类型所在的项目或程序集未从包含类关系图的项目进行引用。若要纠正此错误,请添加一个对包含该类型的项目或程序集的引用。有关更多信息,请参见如何:在 Visual Studio 中添加或移除引用 (Visual Basic)

  • 由于该类型未处于正确的范围内,因此类设计器无法找到它。确保代码未缺失 using、imports 或 #include 语句。另请确保未将该类型(或相关类型)移出它原来所在的命名空间。有关更多信息,请参见引用命名空间和组件

  • 该类型不存在(或者已被注释掉)。若要更正此错误,请确保未意外注释掉或删除该类型。

最有可能看到的有关类型解析问题的错误是在类关系图“<element>”中无法找到一个或多个形状的代码。有关更多信息,请参见有关此错误的说明。

特定错误消息疑难解答

有关针对特定错误消息的疑难解答的更多信息,请参见类设计器错误消息中的错误主题。

C++ 代码元素的限制

  • 当加载 Visual C++ 项目时,类设计器将以只读方式运行。可以更改类关系图,但无法将类关系图的更改保存回源代码。

  • 类设计器仅支持本机 C++ 语义。对于编译成托管代码的 Visual C++ 项目,类设计器将仅可视化本机类型的代码元素。因此,可以向项目添加类关系图,但类设计器将不允许您可视化其 IsManaged 属性设置为 true 的元素(即值类型和引用类型)。

  • 对于 Visual C++ 项目,类设计器只能读取类型的定义。例如,假定您在头 (.h) 文件中定义了一个类型并在实现 (.cpp) 文件中定义了其成员。如果对实现 (.cpp) 文件调用“查看类关系图”,则类设计器不会显示任何内容。又比如,如果对使用 #include 语句以包含其他文件但不包含任何实际类定义的 .cpp 文件调用“查看类关系图”,则类设计器也不会显示任何内容。

  • 定义 COM 接口和类型库的 IDL (.idl) 文件不会在关系图中显示,除非将其编译成本机 C++ 代码。

  • 类设计器不支持全局函数和变量。

  • 类设计器不支持联合。这是一种特殊类型的类,在其中仅分配联合的最大数据成员所需的内存量。

  • 类设计器不显示基本数据类型,如 int 和 char。

  • 类设计器不显示在当前项目外部定义的类型(如果此项目不具有对这些类型的正确引用)。

  • 类设计器可以显示嵌套类型,但不能显示嵌套类型与其他类型之间的关系。

  • 类设计器无法显示 void 类型或从 void 类型派生的类型。

请参见

概念

类设计器中的 Visual C++ 类

类设计器中的 Visual C++ 结构

类设计器中的 Visual C++ 枚举

类设计器中的 Visual C++ Typedef

其他资源

设计和查看类与类型

使用类和其他类型

使用类关系图

设计类和类型

类设计器错误消息