使用 Visual C++ 程式碼 (類別設計工具)
[類別設計工具] 會顯示稱為「類別圖表」(Class Diagram) 的視覺設計介面,以視覺化的方式表現您專案中的程式碼項目。 您可以使用類別圖表來設計和視覺化專案中的類別和其他型別。
[類別設計工具] 支援下列 C++ 程式碼項目:
類別 (類似於 Managed 類別圖案,不過具有多重繼承關係)
匿名類別 (Anonymous Class,可顯示 [類別檢視] 為匿名型別產生的名稱)
樣板類別
結構
Enum
巨集 (顯示巨集的後處理檢視)
Typedef
注意事項 |
---|
這與 UML 類別圖表,您在模型專案中建立。如需詳細資訊,請參閱UML 類別圖表:參考。 |
疑難排解型別解析並顯示問題
原始程式檔的位置
[類別設計工具] 不會追蹤原始程式檔的位置。 因此,如果您修改專案結構,或是移動專案中的原始程式檔,[類別設計工具] 便可能會遺失型別 (這點尤其適用於 typedef、基底類別 (Base Class) 或關聯型別的來源型別)。 您可能會收到錯誤,例如Class Designer is unable to display this type。 如果收到這類錯誤,請再次將修改過或重新配置過的原始程式碼拖曳到類別圖表中,以重新顯示原始程式碼。
更新和效能問題
對於 Visual C++ 專案,可能需要 30 到 60 秒的時間才能在類別圖表中顯示原始程式檔 (Source File) 中的變更。 這項延遲也可能會使 [類別設計工具] 擲回No types were found in the selection的錯誤。 如果收到這類錯誤,請按一下錯誤訊息中的 [取消],並等候程式碼項目在 [類別檢視] 中出現。 在此之後,[類別設計工具] 便應該能夠顯示型別。
如果沒有使用您在程式碼中進行的變更來更新類別圖表,可能需要關閉圖表後再次開啟。
型別解析問題
[類別設計工具] 可能由於下列原因而無法解析型別:
型別所在的專案或組件不是由內含類別圖表的專案所參考。 若要修正這項錯誤,請將參考加入至內含該型別的專案或組件。 如需詳細資訊,請參閱如何:使用加入參考對話方塊加入或移除參考。
型別不在正確的範圍中,因此 [類別設計工具] 無法找到該型別。 請確定程式碼沒有遺失 using、imports 或 #include 陳述式, 並請確定您沒有將型別 (或是相關型別) 移出其原本所在的命名空間。
型別不存在 (或是已經標記為註解)。 若要修正這項錯誤,請確定您沒有將型別標記為註解或刪除型別。
型別位於 #import 指示詞所參考的程式庫中。 手動將產生的程式碼 (.tlh 檔案) 加入至標頭檔中的 #include 指示詞,或許可以解決。
您最有可能看到的型別解析問題錯誤是Code could not be found for one or more shapes in class diagram '<element>'。 這個錯誤訊息不一定表示您的程式碼錯誤。 它只表示類別設計工具無法顯示您的程式碼。 嘗試下列措施。
確認型別存在。 請確定您沒有不小心將標記為註解或刪除原始程式碼。
請確定類別設計工具支援您所輸入的型別。 如需 C++ 程式碼項目的限制。
嘗試解析型別。 這個型別可能會在沒有從專案參考包含類別圖表的專案或組件。 若要修正這項錯誤,請將參考加入至內含該型別的專案或組件。 如需詳細資訊,請參閱如何:使用加入參考對話方塊加入或移除參考。
確認型別在正確的範圍,讓類別設計工具能夠找到它。 確定程式碼沒有遺失、或 usingimports#include 陳述式。 並請確定您沒有將型別 (或是相關型別) 移出其原本所在的命名空間。
疑難排解其他錯誤訊息
您可以在 Microsoft Developer Network (MSDN) 公共論壇中尋求有關錯誤和警告的疑難排解協助。 如需 Visual Studio 類別設計工具論壇。
C++ 程式碼項目的限制
載入 Visual C++ 專案時,[類別設計工具] 會以唯讀的方式運作。 您可以變更類別圖表,不過卻無法將類別圖表中的變更儲存回到原始程式碼中。
[類別設計工具] 僅支援原生 C++ 語意。 對於編譯為 Managed 程式碼的 Visual C++ 專案,[類別設計工具] 只會視覺化屬於原生型別的程式碼項目。 因此,您可以將類別圖表加入專案,不過 [類別設計工具] 不會允許您視覺化將 IsManaged 屬性設定為 true 的項目 (也就是實值型別 (Value Type) 和參考型別 (Reference Type))。
對於 Visual C++ 專案,[類別設計工具] 只會讀取型別的定義。 例如,假設您在標頭 (.h) 檔中定義某個型別,並在實作 (.cpp) 檔中定義其成員。 如果您在實作 (.cpp) 檔中叫用 (Invoke)「類別圖表檢視」,[類別設計工具] 便不會顯示任何項目。 又例如,如果您在以 #include 陳述式包含其他檔案的 .cpp 檔案上叫用「類別圖表檢視」,但其中卻不包含任何類別定義,[類別設計工具] 也不會顯示任何項目。
定義 COM 介面和型別程式庫的 IDL (.idl) 檔案只有在圖表已編譯為原生 C++ 程式碼時,才能夠顯示圖表。
[類別設計工具] 並不支援全域函式和變數。
[類別設計工具] 不支援等位 (Unions)。 這是一種特殊的類別,其中配置的記憶體僅為等位之最大資料成員的需要數量。
[類別設計工具] 不支援顯示 int 和 char 之類的基本資料型別。
當目前專案不具備於專案外部定義的型別之正確參考時,[類別設計工具] 便無法顯示這些型別。
[類別設計工具] 可以顯示巢狀結構的型別,但無法顯示巢狀結構型別和其他型別之間的關係。
[類別設計工具] 無法顯示等於虛值 (Void) 或是從虛值型別衍生的型別。