我有一个用C ++实现图形(模板类)的类(我没有做到这一点),基本上我想做的是表示Places(它们是我的顶点)和我的边(链接它们)是距离(以英里为单位)。
我声明了一个简单的Graph<Places *, double> places;
,现在我正在创建一个方法来检查图中是否已经存在某个Place以避免重复。我的图有一个方法Vertice<TV,TR>* findvert_content(const TV& v) const;
,它返回一个它找到的顶点的指针(所以如果返回指针有效,我假设它存在于图中)。现在我想在我的Test类中执行此操作:
bool Test::verifiesName(Place *place) {
Vertice<Place *, double> find_place = places.findvert_content(*place);
...
}
问题是它给了我一个语义问题:“从'Place'到'Place * const'没有可行的转换”,我不知道该怎么做。
以下是我的findvert方法的代码(供参考):
template<class TV,class TR>
Vertice<TV,TR>* Graph<TV,TR>::findvert_content(const TV& v) const
{
Vertice<TV,TR>* ap=graf;
while (ap != NULL)
{
if (ap->vcontent == v)
return ap ;
else
ap=ap->apvertice;
}
return ap;
}
P.S。 graf只是我的Graph类中的一个属性:Vertice<TV,TR>* graf;
。
答案 0 :(得分:1)
*place
是place
指向的地址的值。在调用方法时,您确定要传递值而不是指针本身吗?像:
Vertice<Place *, double> find_place = places.findvert_content(place);
另外,为什么你需要&amp;如果你没有在方法中修改v
?然后声明
template<class TV,class TR>
Vertice<TV,TR>* Graph<TV,TR>::findvert_content(const TV v) const
它应与上述调用兼容。
答案 1 :(得分:0)
TV
成员中的places
类型需要指向Place
的指针。