首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

线程池管理中的一句语法的有关问题

2012-09-03 
线程池管理中的一句语法的问题template typename Tstruct ThreadParam{void (T::* _function)()T* _pob

线程池管理中的一句语法的问题
template <typename T>
struct ThreadParam
{
void (T::* _function)();
T* _pobject;
ThreadParam(void (T::* function)(), T * pobject)
: _function(function), _pobject(pobject) { }
};

template <typename T>
static DWORD WINAPI WorkerThreadProc(LPVOID pvParam)
{
std::auto_ptr< ThreadParam<T> > p(static_cast< ThreadParam<T>* >(pvParam));
try {
(p->_pobject->*p->_function)();
}
catch(...) {}
return 0;
}

p->_pobject->*p->_function这一行中的第二个p是什么意思,从哪儿来的呀,还请路过的指点一下啊!谢谢~~

[解决办法]
根据优先级把p->_function看在一起的。
实际上就是ThreadParam实例中的_function。
->*是调用成员函数指针的语法。

C/C++ code
//示例:struct fucker{    void foo(){cout<<"fucked"<<endl;}};int main(){    void (fucker::*_function)() = &fucker::foo;    fucker f;    fucker* pf = &f;    (pf->*_function)();    return 0;}
[解决办法]
(p->_pobject)->(*(p->_function))
[解决办法]
如1l所说:
p->_pobject->*p->_function
lz可以看成是:
p->_pobject ---> a
p->_function --> fun

a->*fun();

如果是个对象的话 aa.myfun();这个应该见过吧?
a = &&aa;
fun = &A::myfun;
*fun() = myfun();
a->*fun() = aa.myfun();

热点排行