Привет. Есть у меня такая штука
#define SC_GENERATE(varType, varName, funName)\
protected: varType varName;\
public: virtual varType get##funName(void) const { return varName; }\
public: virtual void set##funName(varType var){ varName = var; }
#define SC_GENERATE(varType, varName, funName)\
protected: boost::shared_ptr<varType> varName;\
public: virtual varType get##funName(void) const { return varName.get(); }\
public: virtual void set##funName(varType var){ varName.get() = var; }