評價: 0 回應: 3 閱覽: 107
置頂

取得 member list

我知道 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 的技術?

熱門回應

yes

yes

所以有人才說C++是半吊子的OOPL嘛

效率不吃緊的話,Hash map或平衡樹放Function pointer有搞頭吧

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言