我的代码中具有以下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/