[英]Get list of available data member from a POD struct in C++
這個問題聽起來有點不同尋常。 我們來看一個POD結構:
struct MyStruct
{
int myInt;
double myDouble;
AnotherPOD* myPointer;
};
編譯器知道可用數據成員的列表。 您是否知道在編譯時(更好)或運行時獲取數據成員名稱列表(和類型)的方法?
我有大量的POD結構,我想自動創建operator <<。
我知道我可以為頭文件創建一個解析器,創建一些文件並編譯它們。 但是,我確信編譯器已經有了這些信息,我想利用它。
有任何想法嗎?
謝謝
BOOST_FUSION_ADAPT_STRUCT引入了編譯時反射(非常棒)。
你可以將它映射到運行時反射當然,它不會太容易,但它可以在這個方向,而它不會反過來:)
我不知道有什么方法可以直接做你想要的,但你可能想看看clang,這是一個編譯器前端實現,你可以利用它來做其他事情:
我想你可以遍歷它創建的抽象語法樹並獲取你所追求的信息。
好吧,標准C ++編譯器不能這樣做,它們缺乏反射功能。
聽起來像是代碼生成器的任務。 因此,要么使用工具包從頭中提取這些信息,要么從另一個源生成頭和序列化函數。 只要確保你不重復自己 。
我擔心,但C ++不支持反射。 您可以使用Boost.TypeTraits在編譯時實現受限制的反射形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.