标题:求大神帮菜鸟解释下
只看楼主
luoweijun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2009-6-12
结帖率:64.71%
已结贴  问题点数:20 回复次数:5 
求大神帮菜鸟解释下
#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方法是什么时候调用的
搜索更多相关主题的帖子: public return 
2014-10-21 16:59
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
得分:20 
public: virtual varType get##funName(void) const { return varName; }\
public: virtual void set##funName(varType var){ varName = var; }
set不就在下面吗

hl928452957@gmail点com

2014-10-21 23:26
luoweijun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2009-6-12
得分:0 
我意思是想问宏生成的成员变量在没有调用set方法的情况下是怎么赋值的,谢谢
2014-10-22 09:35
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
得分:0 
回复 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
}    

hl928452957@gmail点com

2014-10-22 10:25
luoweijun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2009-6-12
得分:0 
谢谢,我在学习下
2014-10-22 11:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437513-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109856 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved