C++實現反射

來源:互聯網
上載者:User

設計模式裡面反射用的很多,還有.Net,java裡面反射機制已經很成熟了,而C++貌似一直沒有要支援反射的跡象

試著自己想想解決辦法,首先想到的就是利用原廠模式,很簡單,利用一個字串 new出相應的對象,代碼大概是這樣的

if(className == "A")

{

  return new A();

}

一般來說是可以實現了,可是如果要實現反射的對象非常多,這個工廠類就會非常大而且很可能要寫好幾個這樣的工廠類,而且一些簡單對象,是使用這樣的方式很不方便。

於是考慮到其實反射就是用一個字串或者類似的東西new出一個對象 如果我們可以寫一個類似new ClassName的函數就行了,於是立刻想到了宏,比如說

如下定義:

#define NEW_OBJECT(ClassName) new ClassName;

 

然後使用:

Obj* c = NEW_OBJECT(Obj);

 

就能夠實現反射了

當然也可以把宏定義成函數的形式;

網上搜了下,大概也都比較認可這樣的方法,還有個說用回呼函數指標實現的,木有看懂..T_T

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.