读书人

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

发布时间: 2013-09-06 10:17:17 作者: rapoo

新手关于模板的一个问题

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)();
[解决办法]
*作用在迭代器上,取出存储的元素.

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

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

读书人网 >C++

热点推荐