© Copyright International Business Machines Corporation 2006. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
可以将常规 C++ 模板可视化并进行编辑。然而,由于 CDT 中缺少支持,所以模板特例化和部分特例化不受支持。当前 UI 不禁用完全特例化和部分特例化的可视化条目。它只是不执行任何操作,例如:
template <class T> class MyVec {
T* data;
int length;
};这是一个常规模板。此模板的可视化将会成功。
template <> class MyVec<bool> {
unsigned int * data;
int length;
};这是一个特例化模板。此模板的可视化将会失败。
不支持对匿名 C++ 类型的字段和方法进行编辑,例如:
class c1 {
class {int j;} abc; // The type of member abc is an anonymous type since defining class has not been given any typename
};此处字段 abc 的类型是一个匿名类。
当前,在图上执行诸如添加或删除字段、方法和枚举文字之类的编辑操作时,C++ 可视化无法处理匿名类型的更改变化量。因此,C++ 可视化编辑功能不可用于匿名类型。一般建议尽可能使用指定的类型,以便编辑功能可用。如果不能使用指定的类型,则应直接编辑代码。
不支持对匿名名称空间内嵌套的指定 C++ 类型的字段和方法进行编辑,例如:
namespace { // anonymous namespace
class c1 {};
}此处类 c1 为匿名名称空间中嵌套的指定类型。
当前,在图上执行诸如添加或删除字段、方法和枚举文字之类的编辑操作时,C++ 可视化无法处理匿名名称空间中嵌套的指定类型的更改。因此,C++ 可视化编辑功能不可用于匿名名称空间内嵌套的指定类型。一般建议尽可能使用指定的名称空间,以便编辑功能可用。如果不能使用指定的类型,则应直接编辑代码。
C++ 可视化不支持具有限定名的类型定义,例如:
namespace n1 {
class c1; // Forward declaration of class c1
}
class n1::c1{ int i;}; // Definition of class c1 using the fully qualified name.C++ 可视化不能处理以上定义,并且类 c1 的可视化会失败。
变通方法:请使用以下代码,它是以上代码的等价代码:
namespace n1 {
class c1{ int i;};
}
有时,代码中的更改(包括重命名元素或在类型中添加/删除成员)可能不会反映在可视化图中。这种错误最常见的原因是来自 CDT 的更改通知不充分或缺少。
变通方法:请对文件执行虚假更改并再次保存代码。另外,有时由 CDT 创建的“C/C++ 索引”可能与代码不一致。快速检查 C/C++ 索引(显示视图 > 其他 > C/C++ > C/C++ 索引)以查看是否缺少某些条目,这样可以得到索引更新发生问题的某些线索。在这种情况下,重建项目的索引可能会有帮助。然而,对于大项目,重建索引可能很耗时,应慎重使用。如果要在图中显示相关元素,请选择完整 C/C++ 索引器选项。