使用for_each时出错
Error while using 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中的每个顶点,它现在必须将其编号设置为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.
}
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错