在C 中,需要將具有不同簽名的函數與唯一的關聯起來是基於運行時參數的動態呼叫的標識符。然而,標準容器不直接支援非同質函數類型的儲存。
克服此限制的一種方法是類型擦除,其中涉及封裝函數將類型放入容器中,該容器會刪除特定類型信息。這允許統一儲存具有不同簽名的函數。為了促進這個過程,定義了一個自訂資料結構 AnyCallable:
AnyCallable 接受異質函數類型並提供通用的operator()來呼叫具有匹配參數的封裝函數。
使用AnyCallable 資料結構,我們現在可以建立一個映射來儲存不同類型的函數簽章:
為了根據函數的唯一字串標識符動態呼叫函數,我們利用AnyCallable提供的operator():
這種方法確保型別安全和動態呼叫具有非同質簽章的函數,使其成為儲存和執行具有不同輸入的方法指標的通用解決方案。
以上是如何在 C 語言的映射中儲存具有非齊次簽名的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!