2

私は上記のエラーになっています、誰かが何か考えを持っているなら私を助けてください。

マップに挿入する関数をvoid traverse使用した関数でこのエラーが発生します。insert

struct node {
    int weight;
    unsigned char value;
    const node *child0;
    const node *child1;
    map<unsigned char, string> huffmanTable;

    node( unsigned char c = 0, int i = -1 ) {
        value = c;
        weight = i;
        child0 = 0;
        child1 = 0;
    }

    node( const node* c0, const node *c1 ) {
        value = 0;
        weight = c0->weight + c1->weight;
        child0 = c0;
        child1 = c1;
    }

    bool operator<( const node &a ) const {
        return weight >a.weight;
    }

    void traverse(ostream& o,string code="") const {

    if ( child0 ) {
        child0->traverse(o, code + '0' );
        child1->traverse(o, code + '1' );
    } else {
        o<<value<<"\t";
        cout <<" " <<value <<"    ";

        o<<weight<<"\t";
        cout <<weight;
        o<<code<<endl;

        cout <<"     " <<code <<endl;
        huffmanTable.insert(pair<unsigned char, std::string>(value,code));

    }
}

};
4

1 に答える 1

4

const 関数からマップhuffmanTableに追加しようとしています。const メンバー関数は、このオブジェクトを変更できません。あなたの選択肢は

  1. マップを変更可能にすることができます

    可変マップ huffmanTable;

また

  1. トラバース関数から const を削除する

    void traverse(ostream& o,string code=""){

于 2012-07-22T15:43:54.843 に答える