我正在尝试制作一个宏,以使其更容易定义属性。

简化的示例,但目前,我可以通过此示例为物业提供公共场所和私人场所:

#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脚;)

10-08 00:57