我知道最好避免C++中的宏。使用內聯函數替換類似函數的宏,並使用constexpr/using來替換const-variable-define宏。 但我想知道是否有一種方法可以通過一些現代C++技術來替代宏串聯功能。用現代C++技術替換C++宏的連接
例如,如何更換以下宏:
#define GETTER_AND_SETTER(name) \
inline void Set##name(int value) \
{ \
m_##name = value; \
}
inline int Get##name() const \
{ \
return m_##name; \
}
然後在一類,我可以一個很大的變數,這使得代碼更乾淨做到這一點。
GETTER_AND_SETTER(Variable1)
GETTER_AND_SETTER(Variable2)
GETTER_AND_SETTER(Variable3)
...
我已經檢查here和here,但我沒有得到答案。那麼對此有何想法? 謝謝。
編輯: getters/setters的例子只是用來顯示想法。請不要關注他們。 :)
不,沒有辦法:) – wasthishelpful
你的問題是你把你的班級當作需要獲取者和設置者的數據叢。 – StoryTeller
只有使用宏才能創建新的標識符。 – Quentin