2015-08-03 41 views
1

有沒有一種方法可以獲得一個列表,或者遍歷一個類的每個成員變量的列表 - 不管它是哪種類型的。如何獲取C++中類的成員變量列表?

我的意圖是將它們全部添加到模板std :: map。

class Person 
{ 
    int Age; 
    char *Name; 
    template<typename Container> std::map<char *, Container> List; 
    void MakeList() 
    { 
     for(auto i : Person.memberVariables) 
     { 
      List.emplace(i); 
     } 
    } 
}; 

我可以做類似上面的事情,將我的類的每個變量添加到列表中,而不管其他代碼是多麼不正確。添加到列表是我感興趣的。

在此先感謝。

+0

閱讀[「我如何將反射添加到C++應用程序?」] [1],看看它是否可以解決您的問題。 [1]:http://stackoverflow.com/questions/41453/how-can-i-add-reflection-to-a-c-application –

+0

@湯姆:好找,這是有效的副本。 – DevSolar

回答

2

如果有,我會很驚訝。

這被稱爲reflection,據我所知,這不被C++支持。

3

不,你不能用C++來做到這一點。這稱爲reflection,目前在C++中不支持。

ISO C++ comitee談論了編譯時反射,這是針對C++ 17提出的,它允許您在編譯時對類成員進行迭代。但是要花費很多時間直到這個特性將被標準化並且在通用編譯器

上實現作爲一個附註,我不明白爲什麼要想迭代成員變量,然後可能實現序列化方法,在這種情況下,我會要求班級實施serialize方法,並通過SFINAE執行。

+0

當我寫下「據我所知」時,我有這種確切的嘮叨疑問。 C++只會讓你意想不到的事情可以做,或將能夠做到。 ;-) – DevSolar