取得 member list
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux clang
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我知道 C++ 沒有 Reflection
但是有沒有可能用類似 SFINAE 之類的技巧達到取得 field names 或是 member list 的
目
要是可行的話類似這樣的設計不是滿漂亮的嗎
class UserTerm : public Frame
{
public:
UserTerm ()
: Frame () { _M_init (); }
UserTerm (const UserTerm &other) = delete;
UserTerm (UserTerm &&other) = delete;
…………
protected:
Button _M_button_next;
Button _M_button_cancel;
TextBox _M_textbox_desc;
Radio _M_radio_agree;
Radio _M_radio_disagree;
…………
private:
void _M_init ()
{ /* 初始化元件 */ }
};
virtual void
UserTerm::_M_show () const
{ /* members.show (); */ }
要是能夠取得 member list,那 _M_show 就可以不用開放給用戶端
用戶端只要把想要的元件塞進 class 裡,然後在 _M_init 設個大小位置之類的初值即可
這樣看起來超棒的啊 所見即所得,不知道有沒有什麼方法可以達成 get_fields ()?
我翻了好多資料都沒有找到比較好的作法 所有人給的答案都是 impossible……
可是我想要的東西在 compile time 就可以確定了啊,應該也不需要什麼 runtime 的技
術?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.15.163.73
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460932320.A.10F.html
推
04/18 09:16, , 1F
04/18 09:16, 1F
→
04/18 09:16, , 2F
04/18 09:16, 2F
推
04/18 10:12, , 3F
04/18 10:12, 3F
→
04/18 10:12, , 4F
04/18 10:12, 4F
→
04/18 10:33, , 5F
04/18 10:33, 5F
→
04/18 10:45, , 6F
04/18 10:45, 6F
→
04/18 10:45, , 7F
04/18 10:45, 7F
static reflection 好像很棒 我先試試看再來回報喔
感謝~
就是說, _M_show 要負責顯示自己和所有底下的成員(Button, TextBox, Radio...)
如果能夠在編譯時期知道一個 class 有哪些 members,那 _M_show 就可以統一寫好
因為雖然每個繼承自 Frame 的 class 都可以擁有不同的成員,但是因為可以在編譯時期
得知,所以還是可以知道有哪些要 show
※ 編輯: CoNsTaR (101.15.163.73), 04/18/2016 11:40:28
推
04/18 11:43, , 8F
04/18 11:43, 8F
我主要的目的是可以讓一個 Frame 一看 class difinition,視窗的布局就呈現在眼前,
想要什麼元件就直接加上去就好
要是用容器裝的話好像就沒有這種效果了…
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 11:51:20
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 12:01:44
推
04/18 11:57, , 9F
04/18 11:57, 9F
就是有點像 wxWidgets 那樣可以讓使用者繼承他的 frame 和 app etc…
然後我希望做到能夠讓使用者在 class 裡自由增加元件
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 12:07:03
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 12:20:31
→
04/18 12:29, , 10F
04/18 12:29, 10F
推
04/18 12:33, , 11F
04/18 12:33, 11F
嗯嗯 其實我就是希望做到 reflection over members, independs of how
其實我的問題好像就是 N4111 裡提到的 reflection 的應用 automated GUI-generation
XD
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 12:40:14
推
04/18 12:41, , 12F
04/18 12:41, 12F
推
04/18 13:17, , 13F
04/18 13:17, 13F
我現在也正在研究 type traits
這好像是一個很有趣的東西
※ 編輯: CoNsTaR (117.19.195.203), 04/18/2016 13:46:50
推
04/18 14:57, , 14F
04/18 14:57, 14F
推
04/18 15:45, , 15F
04/18 15:45, 15F
推
04/18 21:53, , 16F
04/18 21:53, 16F
→
04/27 15:58, , 17F
04/27 15:58, 17F
→
04/27 15:59, , 18F
04/27 15:59, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章