读书人

小弟我已经昏了,关于绑定模板函数的有

发布时间: 2012-02-25 10:01:48 作者: rapoo

我已经昏了,关于绑定模板函数的问题
大家知道boost函数的威力强大,我之前也一直用得很愉快
boost::bind(std::count, _1, _2, _3);
这样的绑定是无法编译通过的,换句话说,就是无法绑定模板函数
是我使用方法没有对,还是确实无法绑定模板函数
我尝试自己写一个对模板函数的bind,好象很棘手,求教

[解决办法]
cout是模板,而bind只能到函数呀。
boost::bind(std::count <XXXXX> , _1, _2, _3)显式实例化即可。
[解决办法]
不用啊用taodm的方法
模板函数写上参数的话就可以bind的
[解决办法]
编译多态?
struct base
{
virtual void func()=0;
};
template <typename derivedT>
struct TimerBase:base
{
void func()
{
//using deriveT::timeMsel here
}
long m_elapsed; // 自上一次触发以来经过的实际毫秒数, 和要求的 TimeMsel 可能并不相同
long m_total; // 启动以来的总时间

};

template <timeMsgEnum TimeMsel>
struct Timer_Msg:TimerBase <Timer_Msg <TimeMsel> > //有些时候没用编译多态了,记不清声明是不是这样的了,见谅:)
{
static const int timeMsel=TimeMsel;
};
void DispatchOneTimer(base&, long totalMsel)
{

}
其实就是把DispatchOneTimer里面需要根据类型的不同来作的事情放到TimerBase::func()里面,然后用虚函数做成运行时接口。这样就可以用bind绑—ispatchOneTimer了。

读书人网 >C++

热点推荐