我想寫一個宏,它在類中展開時使用該類類型(特別是作爲模板參數)。在類的方法,我可以用這個:C++ - 有沒有辦法獲得當前類類型不變的語法?
#define METHOD_MACRO int sample_method(void)const {\
return template_struct<this_type<decltype(this)>::type>::index;}
(this_type是我的結構,這是相當於remove_pointer<remove_const<T>>
)
但是,當我需要的類類型的方法之外(typedef的類成員指針) this
關鍵字不可用;我試圖用auto
來推斷類型的一些技巧,但這裏沒有運氣。 有問題的類從我的類繼承,如果這可以有任何幫助。我想避免任何人使用我的宏必須編寫強制性typdedef
。
任何想法?
使用CRTP?也許你可以完全消除宏... –
這需要用戶的明確努力,我儘量避免。有趣的想法,但不是那裏。 – Abstraction
@Abstraction輸入你的宏的名字需要用戶從CRTP類的繼承中獲得儘可能多的努力:) – Drax