© 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; // 成員 abc 的類型是匿名類型,因為定義類別未給定任何類型名稱
};在此,欄位 abc 的類型是匿名類別。
在圖型上執行編輯作業時,例如新增或刪除欄位、方法及列舉文字,C++ 視覺化目前還無法處理匿名類型的變更差異。因此,匿名類型無法使用 C++ 視覺化編輯功能。通常是建議儘量使用具名類型,這樣才能使用編輯特性。如果不行,就只能直接編輯程式碼。
對於在匿名名稱空間內巢狀的具名 C++ 類型,不支援編輯此類型的欄位和方法,例如:
namespace { // 匿名名稱空間
class c1 {};
}在此,類別 c1 是匿名名稱空間內巢狀的具名類型。
在圖型上執行編輯作業時,例如新增或刪除欄位、方法及列舉文字,C++ 視覺化目前還無法處理匿名名稱空間內巢狀的具名類型的變更。因此,匿名名稱空間內巢狀的名稱類型無法使用 C++ 視覺化編輯特性。通常是建議儘量使用具名名稱空間,這樣才能使用編輯特性。如果不行,就只能直接編輯程式碼。
C++ 視覺化不支援完整名稱的類型定義,例如:
namespace n1 {
class c1; // 類別 c1 的正向宣告
}
class n1::c1{ int i;}; // 類別 c1 使用完整名稱的定義C++ 視覺化無法處理上述定義,類別 c1 的視覺化會失敗。
暫行解決方法:使用下列同等的程式碼:
namespace n1 {
class c1{ int i;};
}
視覺化圖型有時無法反映程式碼的變更,包括重新命名元素或新增/刪除類型的成員。 最常見的原因是來自 CDT 的變更通知不適用或不足。
暫行解決方法:再一次假裝變更檔案,然後儲存程式碼。此外,CDT 建立的「C/C++ 索引」有時和程式碼不一致。迅速檢查 C/C++ 索引(顯示視圖 > 其他 > C/C++ > C/C++ 索引)來查明是否遺漏某些項目,可發現問題在於索引更新。在此情況下,重新建置專案的索引或許有用。不過,大型專案重新建置索引時很浪費時間,請謹慎使用。若要在圖型中顯示相關的元素,請選取完整 C/C++ 索引器選項。