-3

我有这个问题,有人可以帮助我吗?

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')
{}
4

1 回答 1

0

第一个错误:您的类型 edge_name_t(edge_name_t 的底层类型是什么?)必须支持 operator=(const char* str),它接受字符串作为参数。因此,如果 edge_name_t 是一个类,只需添加并实现运算符和第二个错误:这里有同样的问题。无论 edge_name_t 是什么,它都不提供compare- 方法。无论如何,您应该插入 edge_name_t 的声明。它是一个字符串,你自己的类还是它是什么?

顺便提一句。由于您没有提供太多信息,我只能假设您正在尝试做什么,但我不会为此使用字符串,因为比较相对较慢。如果您不想命名边缘,而只是“标记”它们,那么使用“枚举”可能是一种更好的方法。

于 2012-06-27T10:51:03.257 回答