【发布时间】:2010-12-23 17:41:55
【问题描述】:
我正在尝试创建一个宏,让我免于打字,并让定义属性变得更好/更容易,这就是我的想法:
#define DefineProperty(Access, Type, Name) \
property<Access, Type> ##Name; \
void Set##Name(Type); \
Type Get##Name(void); \
其中 Access 是一个具有三个可能值的枚举:ReadOnly、WriteOnly 和 ReadWrite。只有在访问值适合该方法时,才应定义宏中的方法。
这是否有可能,例如使用元编程?
【问题讨论】:
-
没有宏元编程之类的东西。您可能需要在此处进行部分模板专业化。此外,使用一种构造,有时定义方法,有时不使用是相当棘手的。你真正想要完成什么?如果你有足够多的 getter 和 setter 使用来简化编写它们,那么你几乎肯定会写出糟糕的 O-O。
-
@David - 你对此可能大错特错。参见 boost.preprocessor
-
@Noah:谢谢。有这样的事情。我更高兴不知道。
-
这很不幸。这是一个非常强大且重要的库。
-
@David:我正在努力完成我向您展示的内容。更容易定义属性。是的,我需要它们,不,这还不错哦。我经常使用 c#,并且非常喜欢属性的工作方式。所以我也想在 C++ 中做同样的事情。
标签: c++ macros c-preprocessor metaprogramming