2006/12/25 | C/C++ 宏
类别(学习) | 评论(0) | 阅读(498) | 发表于 10:56


#define FunctorParamSec(N) \
template<typename F> \
class UsedFunctorParam<F,N>{ \
public: \
typedef typename F::Param##N##T Type; \
}

\是换行
##是连接算符
例如:
#define a(N) b##N

int main(int argc, char* argv[])
{
int bb3=5;
printf("%d",a(b3)); //等价于printf("%d",bb3);
return 0;
}
即可以将多个字符拼成一个变量名


template<typename F>
class ...
是定义模板类


typedef typename F::Param##N##T Type;
##就不多说了,是把Param和N和T代表的字符拼成一个,应该是一个类型名称
typedef 用来把typename F::Param##N##T起一个别名为Type,省得每次都写那么复杂,而且用Type意思也很清楚,但这种类型只有在UsedFunctorParam类的范围内可见,既有作用域,如果想在外面使用应该写成:UsedFunctorParam::Type
0

评论Comments

日志分类
首页[122]
图片[31]
文字[29]
日志[38]
学习[11]
收藏[13]