Я пытаюсь создать макрос, чтобы упростить определение свойств.
Упрощенный пример, но на данный момент у меня есть это, чтобы предоставить свойство с публичным набором get и private:
#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:
в макросе, не затрагивая остальную часть класса?