注册 登录
编程论坛 C++教室

求大神帮菜鸟解释下

luoweijun 发布于 2014-10-21 16:59, 480 次点击
#define CC_SYNTHESIZE(varType, varName, funName)\
protected: varType varName;\
public: virtual varType get##funName(void) const { return varName; }\
public: virtual void set##funName(varType var){ varName = var; }

一个在类的头文件中调用了这个宏,按照宏的说明是生成了一成员变量和这个成员变量的set和get方法,在代码中我只看到调用get方法获取成员变量的值,但找不到调用set方法,请问set方法是什么时候调用的
5 回复
#2
stop12042014-10-21 23:26
public: virtual varType get##funName(void) const { return varName; }\
public: virtual void set##funName(varType var){ varName = var; }
set不就在下面吗
#3
luoweijun2014-10-22 09:35
我意思是想问宏生成的成员变量在没有调用set方法的情况下是怎么赋值的,谢谢
#4
stop12042014-10-22 10:25
回复 3 楼 luoweijun
没有. 你只能通过这样的方式

#define CC_SYNTHESIZE(varType) {varType=5+5;}//这个就是默认varType的值是10了,不管怎么调用都是这样


另一种方式-----
程序代码:

#define CC_SYNTHESIZE(varType, varName, funName) {varType=varName+funName; varType=varType*varType;}//其实跟内联函数差不多
int main()
{
    int n = 0;
    CC_SYNTHESIZE(n, 2, 3);    //  输出 25
}


建议用内联函数.
程序代码:

inline void CC_SYNTHESIZE(int varType = 3, int varName = 4, int funName = 5)
{
    cout << varType << varName << funName;
}
int main()
{
    CC_SYNTHESIZE();    // 345
}   
#5
luoweijun2014-10-22 11:28
谢谢,我在学习下
1