我有这个问题,有人可以帮助我吗?
boost::property_map<slGraph, edge_name_t>::type name1 = get(edge_name, graph);
slEdgeIterator ei, ei_end;
for(tie(ei, ei_end) = edges(graph); ei != ei_end; ++ei){
name1[*ei] = "UNKNOWN"; //(error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const char [8]' (or there is no acceptable conversion))
}//end
slOutEdgeIterator outEdgeItr;
if(name1[*outEdgeItr].compare("UNKNOWN")==0)// (error C2039: 'compare' : is not a member of 'boost::detail::error_property_not_found')
{}
答案 0 :(得分:0)
第一个错误:你的类型edge_name_t(什么是基础类型的edge_name_t?)必须支持operator =(const char * str),它接受一个字符串作为参数。因此,如果edge_name_t是一个类,只需添加并实现运算符即可
第二个错误:这里问题相同。无论edge_name_t是什么,它都不提供compare
- 方法。
无论如何,你应该插入edge_name_t的声明。它是一个字符串,你自己的类或它是什么?
顺便说一下。既然你没有提供太多信息,我只能假设你正在尝试做什么,但我不会使用字符串,因为比较相对较慢。如果你不想为你的边缘命名但只是为了“标记”它们,那么使用“枚举”可能是更好的方法。