我正在尝试制作一个宏,以使其更容易定义属性。
简化的示例,但目前,我可以通过此示例为物业提供公共场所和私人场所:
#define propertyRO(xxType, xxName)\
property xxType xxName\
{\
xxType get() {return m___##xxName;}\
void set(xxType value) {m___##xxName = value;}\
}\
private:\
xxType m___##xxName;\
然后使用它,您可以这样做:
public ref class Wawawa
{
public:
int bob;
propertyRO(String^, MyName);
};
这可能会很好用,但是存在缺陷,因为该成员是在私有作用域中指定的,这意味着在宏也获得私有作用域之后发生的所有事情。例如:
public ref class Wawawa
{
public:
int bob;
propertyRO(String^, MyName);
int fred; //ERROR HERE <- this would be private not public
};
因此,如果您忽略此宏的实际作用,我的真正问题是:是否可以在宏中使用
private:
关键字而不影响类的其余部分? 最佳答案
将您的属性宏调用全部插入到类定义的末尾。 (我同意,这个答案有点of脚;)