【发布时间】:2010-04-19 15:34:42
【问题描述】:
我正在尝试制作一个宏,以便更轻松地定义属性。
简化的例子,但目前我有这个提供一个公共获取和私有集的属性:
#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: 关键字,而不影响类的其余部分?
【问题讨论】:
标签: variables visual-c++ scope c++-cli c-preprocessor