C++
不能统一抽象成员函数指针
与普通函数
!
元<动 F>空 f(串&b){F(b);}元<动 F>空 bb(串&b){F(*本,b);F(*本,b);}空 h(串&b){f<ff>(b);bb<g<A>>(b);}
不能混合在一起,如:
元<类 T,动 F>空 g(本 T&t,串&b){如 常式(是指针值<推导(F)>){F(b);}异 如 常式(是成函针值<推导(F)>){F(t,b);}}//这样是不行的!
或这样:
构 B{向量<串>们;空 g(串&b){打印大小(们);打印(b);}
};
空 ff(串&b){打印(b);打印(b);打印(b);
}元<极 I=0>
空 gg(串&b){如 常式(I==0){ff(b);}异{B d;d.g(b);}}
上面,也是不好,或可利用λ
:
空 ff(串&b){打印(b);打印(b);打印(b);}
构 A{向量<串>们;元<类 F>空 g(F&f,串&b){f(b);}//空 h(串&b){动 f=[&](串&b){打印大小(们);打印(b);};g(f,b);打印("--");g(ff,b);}
};整 主(){A a;串 b{"哈哈"};a.h(b);
}
虽然丑了点,但将就了!