簡體   English   中英

從C ++中的POD結構獲取可用數據成員的列表

[英]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,這是一個編譯器前端實現,你可以利用它來做其他事情:

http://clang.llvm.org

我想你可以遍歷它創建的抽象語法樹並獲取你所追求的信息。

好吧,標准C ++編譯器不能這樣做,它們缺乏反射功能。

聽起來像是代碼生成器的任務。 因此,要么使用工具包從頭中提取這些信息,要么從另一個源生成頭和序列化函數。 只要確保你不重復自己

我擔心,但C ++不支持反射。 您可以使用Boost.TypeTraits在編譯時實現受限制的反射形式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM