我的代码中具有以下2个功能:

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中的每个顶点,现在必须将其数字设置为0。一旦开始图形遍历,稍后我将把num递增到遍历的计数。

编译时,我得到“
错误C2197:“布尔(__cdecl *)(无效)”:调用的参数过多”错误。

template <class VertexType, class EdgeType> class Vertex{
protected:
    VertexType vertice;
    EdgeType edge;

public:

};

std::vector<project3::Vertex<VertexType, EdgeType>*> Vertice1;

最佳答案

for_each算法收到一个unary function,该签名应具有以下签名:

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)
}

关于c++ - 使用for_each时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5612210/

10-09 00:41