亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何向C+應用程序添加反射?

如何向C+應用程序添加反射?

C++ C
繁花不似錦 2019-06-06 15:01:36
如何向C+應用程序添加反射?我希望能夠對C+類的名稱、內容(即成員及其類型)進行反思。我說的是本地C+,而不是托管C+,它有反射。我知道C+使用RTTI提供了一些有限的信息。哪些額外的庫(或其他技術)可以提供這些信息?
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

有兩種reflection游來游去。

  1. 通過對類型的成員進行迭代、枚舉其方法等方式進行檢查。



    這在C+中是不可能的。
  2. 通過檢查類型(類、結構、聯合)是否有方法或嵌套類型,檢查是否來自另一種特定類型。



    這種情況在C+中使用是可能的。

    template-tricks

    ..使用

    boost::type_traits

    對于許多事情(比如檢查類型是否是整型)。若要檢查成員函數是否存在,請使用

    是否可以編寫模板來檢查函數的存在?

    ..若要檢查是否存在某種嵌套類型,請使用“普通”。

    SFINAE .

如果您正在尋找實現1)的方法,比如查看一個類有多少個方法,或者像獲取一個類id的字符串表示形式,那么恐怕沒有標準C+方法可以做到這一點。你必須用任何一種

  • MetaCompiler類似于QTMetaObjectCompiler,它翻譯您的代碼,添加額外的元信息。
  • 宏的框架結構,允許您添加所需的元信息。您需要告訴框架的所有方法、類名、基類和它需要的一切。

C+是以速度為核心的。如果您想要像C#或Java那樣的高級檢查,那么恐怕我必須告訴您,如果不付出一定的努力,就沒有辦法。


查看完整回答
反對 回復 2019-06-06
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我很想要一匹小馬,但小馬并不是免費的。-p

http:/en.wikibooks.org/wiki/C%2B%2B_Programming/RTTI你會得到的。反射就像你正在考慮的-運行時可用的完全描述性元數據-只是默認情況下C+不存在。


查看完整回答
反對 回復 2019-06-06
  • 3 回答
  • 0 關注
  • 679 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號