编译出现error C2664: cannot convert parameter 1 from 'bool (class CVertex *,class CVertex *)' to 。 50
编译的时候出现D:\programming\project\No_2\CGraph.cpp(83):errorC2664:'void__thiscallstd::list...
编译的时候出现
D:\programming\project\No_2\CGraph.cpp(83) : error C2664: 'void __thiscall std::list<class CVertex *,class std::allocator<class CVertex *> >::sort(struct std::greater<class CVertex *>)' : cannot convert parameter 1 from 'bool (class CVertex *,class
CVertex *)' to 'struct std::greater<class CVertex *>'
No constructor could take the source type, or constructor overload resolution was ambiguous
程序段部分如下:
class CVertex{
public:
int d;
int p;
int ID;
CVertex(){d = INFINITY; p = NULL;}
~CVertex();
};
bool pVertexComp( CVertex* x,CVertex* y)
{
if ( x->d < y->d ) return true;
else
return false;
}
void CGraph::DijkstraAlg(int s)
{
map<int, CVertex*>::iterator i,iend;
iend = mapVID_Vertex.end();
for( i=mapVID_Vertex.begin(); i != iend; i++)
{
if ( i->second->ID == s)
i->second->d = 0;
listTempMark.push_back(i->second);
}
Update(s);
while( ! listTempMark.empty() )
{
listTempMark.sort(pVertexComp);
int j = (*listTempMark.begin())->ID;
listTempMark.pop_front();
Update(j);
}
}
跪求各位高手,到底是哪里出了问题啊?急啊 展开
D:\programming\project\No_2\CGraph.cpp(83) : error C2664: 'void __thiscall std::list<class CVertex *,class std::allocator<class CVertex *> >::sort(struct std::greater<class CVertex *>)' : cannot convert parameter 1 from 'bool (class CVertex *,class
CVertex *)' to 'struct std::greater<class CVertex *>'
No constructor could take the source type, or constructor overload resolution was ambiguous
程序段部分如下:
class CVertex{
public:
int d;
int p;
int ID;
CVertex(){d = INFINITY; p = NULL;}
~CVertex();
};
bool pVertexComp( CVertex* x,CVertex* y)
{
if ( x->d < y->d ) return true;
else
return false;
}
void CGraph::DijkstraAlg(int s)
{
map<int, CVertex*>::iterator i,iend;
iend = mapVID_Vertex.end();
for( i=mapVID_Vertex.begin(); i != iend; i++)
{
if ( i->second->ID == s)
i->second->d = 0;
listTempMark.push_back(i->second);
}
Update(s);
while( ! listTempMark.empty() )
{
listTempMark.sort(pVertexComp);
int j = (*listTempMark.begin())->ID;
listTempMark.pop_front();
Update(j);
}
}
跪求各位高手,到底是哪里出了问题啊?急啊 展开
2个回答
展开全部
函数参数传错了,好好看一下函数原型,
追问
就是不知道哪里出问题了啊?怎么改啊?
追答
仔细琢磨,自己琢磨出来的才是精华,以后遇到大问题才不会害怕,这是一个语法错误,说明你对这些函数的用法不能掌握,找相关书籍来看,当你把你解决不了的问题彻底解决是,你在真正的掌握了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译器用的哪个?
追问
vc++6.0 可能是编译器问题
追答
vc6对模板支持的不怎么好,建议用最新的vs。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询