C 中self 成員類型的自主實現
C 缺乏PHP 中self 關鍵字的顯式語法,該關鍵字表示類型封閉類的。傳統上,可以透過在每個類別中定義 typedef 別名來手動模擬此行為:
但是,這種方法涉及重複類別名,從而引入不匹配和錯誤的潛在風險。為了解決這個問題,提出了一種利用 decltype 和朋友的替代方法:
不幸的是,這種語法在類別定義的上下文中無效。
實現 self 的自主實現,需要更複雜的方法。利用模板元編程,我們可以定義一個類別模板Self,它封裝了類別行為,同時消除了手動類型複製的需要:
為了使用這種機制,我們引入兩個宏:
使用這些宏,我們可以定義具有自身成員類型的類別:
對於派生類, WITH_SELF_DERIVED 巨集允許多重繼承:
此解決方案與 gcc 4.8 和 clang 3.4 相容,支援在 C 中自主實作 self 成員類型,而不需要明確的類別名稱重複。
以上是我們如何在 C 中自動實作「self」成員類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!