轉發聲明巢狀類別
在 C 中,不可能在其容器之外轉發宣告嵌套類別。編譯器需要在其包含範圍內對巢狀類別進行完整定義。
假設您有一個包含巢狀類別的類別:
class Container { public: class Iterator { // ... }; // ... };
嘗試在另一個中轉發聲明Container::Iterator頭檔會導致編譯錯誤:
class Container::Iterator; class Foo { void Read(Container::Iterator& it); };
原因限制
編譯器需要知道類別的完整結構,包括巢狀類,然後才能產生代碼。在其容器外部轉發聲明嵌套類別會破壞此依賴性。
解決方法選項
要規避此限制,您有多種選擇:
透過遵循這些準則,您可以確保在轉送聲明巢狀類別時程式碼成功編譯。
以上是為什麼我不能在其容器之外轉發聲明嵌套 C 類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!