C++ 領域建模的版本注意事項

© 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.

版本注意事項

1.0 限制
   1.1 範本特殊化支援
   1.2 編輯匿名 C++ 類型的欄位和方法
   1.3 編輯巢狀 C++ 類型的欄位和方法
2.0 已知的問題和暫行解決方法
   2.1 完整名稱的類型定義
   2.2 重新整理圖型來反映程式碼變更和索引

1.0 限制

1.1 範本特殊化支援

正常 C++ 範本可視覺化和編輯。但由於 CDT 缺乏支援,不支援範本特殊化和局部特殊化。目前的 UI 不會禁止完整和局部特殊化的視覺化項目,只是沒有作用,例如:
template <class T> class MyVec {
 T* data;
 int length;
}; 

這是正常範本。視覺化沒有問題。

template <> class MyVec<bool> {
 unsigned int * data;
 int length;
}; 

這是特殊化範本。視覺化會失敗。

1.2 編輯匿名 C++ 類型的欄位和方法

不支援編輯匿名 C++ 類型的欄位和方法,例如:
class c1 {
   class {int j;} abc;    // 成員 abc 的類型是匿名類型,因為定義類別未給定任何類型名稱
};

在此,欄位 abc 的類型是匿名類別。

在圖型上執行編輯作業時,例如新增或刪除欄位、方法及列舉文字,C++ 視覺化目前還無法處理匿名類型的變更差異。因此,匿名類型無法使用 C++ 視覺化編輯功能。通常是建議儘量使用具名類型,這樣才能使用編輯特性。如果不行,就只能直接編輯程式碼。

1.3 編輯巢狀 C++ 類型的欄位和方法

對於在匿名名稱空間內巢狀的具名 C++ 類型,不支援編輯此類型的欄位和方法,例如:

namespace {   // 匿名名稱空間
    class c1 {};
}

在此,類別 c1 是匿名名稱空間內巢狀的具名類型。

在圖型上執行編輯作業時,例如新增或刪除欄位、方法及列舉文字,C++ 視覺化目前還無法處理匿名名稱空間內巢狀的具名類型的變更。因此,匿名名稱空間內巢狀的名稱類型無法使用 C++ 視覺化編輯特性。通常是建議儘量使用具名名稱空間,這樣才能使用編輯特性。如果不行,就只能直接編輯程式碼。

2.0 已知的問題和暫行解決方法

2.1 完整名稱的類型定義

C++ 視覺化不支援完整名稱的類型定義,例如:

namespace n1 {
   class c1;    // 類別 c1 的正向宣告
}
class n1::c1{ int i;};   //  類別 c1 使用完整名稱的定義

C++ 視覺化無法處理上述定義,類別 c1 的視覺化會失敗。

暫行解決方法:使用下列同等的程式碼:

namespace n1 {
 class c1{ int i;};
}

2.2 重新整理圖型來反映程式碼變更和索引

視覺化圖型有時無法反映程式碼的變更,包括重新命名元素或新增/刪除類型的成員。 最常見的原因是來自 CDT 的變更通知不適用或不足。

暫行解決方法:再一次假裝變更檔案,然後儲存程式碼。此外,CDT 建立的「C/C++ 索引」有時和程式碼不一致。迅速檢查 C/C++ 索引(顯示視圖 > 其他 > C/C++ > C/C++ 索引)來查明是否遺漏某些項目,可發現問題在於索引更新。在此情況下,重新建置專案的索引或許有用。不過,大型專案重新建置索引時很浪費時間,請謹慎使用。若要在圖型中顯示相關的元素,請選取完整 C/C++ 索引器選項。