-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 がクラスの場合は、演算子を追加して実装するだけで、2 番目のエラー: 同じ問題が発生します。edge_name_t が何であれ、compare-method は提供されません。とにかく、edge_name_t の宣言を挿入する必要があります。それは文字列ですか、独自のクラスですか、それとも何ですか?

ところで。あなたは多くの情報を提供しなかったので、あなたが何をしようとしているのかを推測することしかできませんが、比較が比較的遅いため、これには文字列を使用しません. エッジに名前を付けたくないが、それらに「フラグを立てる」だけの場合は、「列挙型」を使用する方が良いかもしれません。

于 2012-06-27T10:51:03.257 に答える