© Copyright International Business Machines Corporation 2006. All rights reserved.
標準の 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 が無名クラスです。
フィールドやメソッド、および Enum リテラルの追加や削除などの編集操作がダイアグラムに対して行われる場合、現在、C++ 可視化は無名型についてデルタの変更を処理できません。 このため、C++ 可視化の編集機能は無名型に対して使用不可になります。一般的には、編集機能を使用可能にできるよう、できるだけ名前付きの型で作業を行うことをお勧めします。これが不可能な場合は、コードを直接編集する必要があります。
無名ネームスペース内でネストされた名前付き C++ 型のフィールドおよびメソッドの編集はサポートされていません。 例えば、次のようになります。
namespace { // anonymous namespace
class c1 {};
}ここでは、クラス c1 は無名ネームスペースでネストされた名前付きタイプです。
フィールドやメソッド、および Enum リテラルの追加や削除などの編集操作がダイアグラムに対して行われる場合、現在、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++ Index)」) と、インデックスの更新が問題であることの手掛かりが得られる場合があります。そのような場合は、プロジェクトでインデックスを再ビルドすると、 うまくいくことがあります。ただし、大きなプロジェクトではインデックスの再ビルドに時間がかかることがあるので、慎重に行う必要があります。ダイアグラムの関連要素を表示したい場合は、 「フル C/C++ インデクサー」オプションを選択してください。