弱逼问题:S::*xmeth是个啥? S是个类吧,xmeth是类的一个成员?成员能当做变量类型吗?
贴上相关代码
全选复制放进笔记template void
rpcs::reg(unsigned int proc, S*sob, int (S::*meth)(const A1 a1, const A2 a2,
R & r))
{
class h1 : public handler {
private:
S * sob;
int (S::*meth)(const A1 a1, const A2 a2, R & r);
public:
h1(S *xsob, int (S::*xmeth)(const A1 a1, const A2 a2, R & r))
: sob(xsob), meth(xmeth) { }
int fn(unmarshall &args, marshall &ret) {
A1 a1;
A2 a2;
R r;
args >> a1;
args >> a2;
if(!args.okdone())
return rpc_const::unmarshal_args_failure;
int b = (sob->*meth)(a1, a2, r);
ret << r;
return b;
}
};
reg1(proc, new h1(sob, meth));
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
S::*xmeth是个啥?S是个类吧,xmeth 是类的一个成员?
根据模板的参数
template
可知,S、A1、A2和R都是类。所以,
S::* // 表示指向类 S 的成员的指针
S::*xmeth // 表示该指针的变量名是 xmeth
成员能当做变量类型吗?
不能,函数reg的第三个参数的类型是成员函数指针,不是成员。
具体来说,函数reg的第三个参数的变量名是meth,类型是int (S::*)(const A1, const A2, R &)。即meth是一个指向类S的成员函数的指针,这种类S的成员函数有三个参数,这三个参数的类型分别是const A1, const A2和R &,这种类S的成员函数的返回值类型是int。
用英语可能更容易理解:meth is a pointer points to member function of class S whose parameters are const A1, const A2 and R &, return type is int.