C++ 没有用于调用的匹配函数

C++ 没有用于调用的匹配函数,c++,stl,C++,Stl,我试图通过两种方式推动元素,但仍然出现错误。 如何删除此错误 Error 1 - > `No matching function for call to 'vertexInfo<char>:: vertexInfo(Int&)` Error 2 -> `No matching function for call to std :: vector <vertexInfo<char> , std :: allocator <vert

我试图通过两种方式推动元素,但仍然出现错误。
如何删除此错误

Error 1 - > `No matching function for call to 'vertexInfo<char>:: vertexInfo(Int&)`     
Error 2 ->  `No matching function for call to std :: vector <vertexInfo<char> , std :: allocator <vertexInfo<char> > > push_back(int&)` 
通过看到回复,我更新了代码的主体。增加了两个构造函数

UPDATE :    
vertexInfo()//默认构造函数
vertexInfo(常量映射::迭代器和iter)
{ 
//带迭代器的构造函数指向地图中的顶点,即它使用顶点在地图中的位置初始化vtxMapLoc数据成员。
}
但不了解如何编写构造函数体

第一个错误

 vertexInfo() //Default constructor

vertexInfo( const map<T, int> :: iterator& iter)
{ 
     // constructor with iterator pointing to a vertex in map i.e. it is initializes the vtxMapLoc data member with the location of the vertex in the map.
}
调用“vertexInfo::vertexInfo(Int&)”时没有匹配的函数
这意味着类型
vertexInfo
没有构造函数将
Int
(代码示例中变量
index
的类型)作为参数。只要创建这样的构造函数,一切都会正常工作

至于第二个错误,我不清楚你想要达到什么样的行为。您正试图
int
值推回
向量
vertexInfo
。如果希望它创建相应的
vertexInfo
,则可能应该使用或
vertexInfo
构造函数,如第一个示例所示。无论如何,您需要定义构造函数。

第一个错误

 vertexInfo() //Default constructor

vertexInfo( const map<T, int> :: iterator& iter)
{ 
     // constructor with iterator pointing to a vertex in map i.e. it is initializes the vtxMapLoc data member with the location of the vertex in the map.
}
调用“vertexInfo::vertexInfo(Int&)”时没有匹配的函数
这意味着类型
vertexInfo
没有构造函数将
Int
(代码示例中变量
index
的类型)作为参数。只要创建这样的构造函数,一切都会正常工作


至于第二个错误,我不清楚你想要达到什么样的行为。您正试图
int
值推回
向量
vertexInfo
。如果希望它创建相应的
vertexInfo
,则可能应该使用或
vertexInfo
构造函数,如第一个示例所示。无论如何,您需要定义构造函数。

请提供一个请提供一个我添加了两个构造函数,但不知道如何编写其主体。我尝试过像vertexInfo[iter]=vtxMapLoc一样,但似乎是错误的。@Tushar您仍然没有添加任何接受
int
作为唯一参数的构造函数。@Tushar在构造函数中,您应该使用提供的数据创建结构(设置其所有字段)。如果你不知道怎么做,我就更不知道了。我已经创建了构造函数vertexInfo(int-index){},它已经完成了。但现在面临着参数化构造函数的问题。基本上,我用map和set表示图形。因此,当我将addEdge(A,B,2),addEdge(B,C,3)映射应该存储A->0,B->1,C->2(键->索引),然后这个“索引”将存储在向量vInfo中。然后vInfo[0]将指向一些成员函数,如inDegree(),outDegree(),getNeighbor()等。在这个vtxMapLoc(迭代器)中,应该再次指向映射,即(*vInfo[0].vtxMapLoc).first=A,(*vInfo[1].vtxMapLoc).first=B(*vInfo[2].vtxMapLoc).first=C,我用这种方式初始化了参数化构造函数:vertexInfo(typename map::iterator&iter):vtxMapLoc{iter}{但我得到的输出是:分段错误,内核转储。我哪里出错了?我添加了两个构造函数,但不知道如何编写它的主体。我尝试过像vertexInfo[iter]=vtxMapLoc,但似乎是错误的。@Tushar您仍然没有添加任何接受
int
作为唯一参数的构造函数。@Tushar在构造函数中,您应该使用提供的数据创建结构(设置其所有字段)。如果您不知道如何做,我更不知道。我已经创建了构造函数vertexInfo(int index){}完成了。但是现在面临着参数化构造函数的问题。基本上我用map和set来表示图形。所以当我添加(A,B,2)时,addEdge(B,C,3)map应该存储A->0,B->1,C->2(键->索引),然后这个“索引”将存储在向量vInfo中。然后vInfo[0]将指向一些成员函数,如inDegree()、outDegree()、getNeighbor()等。。。。在这个vtxMapLoc中(它是迭代器)应该再次指向map,即(*vInfo[0].vtxMapLoc).first=A,(*vInfo[1].vtxMapLoc.first=B(*vInfo[2].vtxMapLoc.first=C),我用这种方式初始化参数化构造函数:vertexInfo(typename-map::iterator&iter):vtxMapLoc{iter},但我得到的输出是:segmentation fault,堆芯倾倒。我错在哪里了??
No matching function for call to 'vertexInfo<char>:: vertexInfo(Int&)