使用for_each时出错

我的代码中有以下两个函数:
bool num()
{
    return 0;
}

void setDFS()
{
    int i = 0;
    project3::Graph<string, string> g1;

    std::for_each(g1.Vertice1.begin(), g1.Vertice1.end(),num);

}
该函数的作用是对于向量Vertice1中的每个Vertice,它现在必须将其数字设置为0。一旦我开始图遍历,稍后我会将num递增到遍历的计数。 在编译时,我正在“ 错误C2197:'bool(__ cdecl *)(void)':调用“错误的参数太多。
template <class VertexType, class EdgeType> class Vertex{
protected:
    VertexType vertice;
    EdgeType edge;

public:

};

std::vector<project3::Vertex<VertexType, EdgeType>*> Vertice1;
    
已邀请:
for_each算法接收一元函数,该函数应具有以下签名:
void function(T&);
其中T是g1.Vertice1向量的元素类型:
template <class VertexType, class EdgeType>
void num(project3::Vertex<VertexType, EdgeType>* v) {
  *v = 0; // <- Maybe v->set(0,0,0)
}
    
取自SGI网站:   For_each将函数对象f应用于[first,last]范围内的每个元素; f的返回值(如果有)将被忽略。 和   一元函数是一种函数对象:一个被调用的对象就好像它是一个普通的C ++函数。使用单个参数调用一元函数。 据我从文档中理解,
for_each
构造将迭代传递的集合并将当前元素传递给您的函数,然后您需要相应地更新传递的项目。     
从以前我认为是相同程序/同一用户的经验来看,我会说num需要接受一个字符串参数,因为它需要操作一些东西(查看std :: for_each的第三个参数的声明)标题中的()方法)。 另外,如果num()方法是对象的一部分,我认为它不会直接起作用(因为C ++对成员函数隐含了“this”这个参数。) 可能的解决方案是围绕此函数的非成员包装器,如下所示:
void my_non_member(string str)
{
    myobj.my_member(str); // myobj is a reference to a Vertice object that must be  
    // initialised elsewhere.
}
    

要回复问题请先登录注册