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

新手关于模板的一个有关问题

2013-09-06 
新手关于模板的一个问题int main (){vectorfortempuse vftu(5)apply(vftu,&fortempuse::dowork)这是ma

新手关于模板的一个问题

int main (){
vector<fortempuse> vftu(5);
apply(vftu,&fortempuse::dowork);

这是main
这是定义:
class fortempuse
{
public:
fortempuse()
{
;
}
void dowork()
{
cout<<"7"<<endl;
}
};
template<class T,class R,class F>
void apply(T &seq,R (F::*fun)())
{
cout<<typeid(R).name()<<"\t"<<typeid(F).name()<<endl;
typename T::iterator it = seq.begin();
while(it != seq.end())
{
fun();//error C2064: 项不会计算为接受 0 个参数的函数
it++;
}
}

现在是想让vector中的每个元素执行dowork() 总是编译不过啊,咋办?
[解决办法]
((*it).*fun)();
[解决办法]
*作用在迭代器上,取出存储的元素.

.*是访问成员指针的运算.

->*也是访问成员函数指针的运算符,和.*不同的是在前面的是对象还是指针.

热点排行