如何将任何类型的对象转换为字符串

时间:2012-06-27 10:33:34

标签: c++

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

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

1 个答案:

答案 0 :(得分:0)

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

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