2

私は修正しようとしていたいくつかの欠陥のある Huff 圧縮コードを書きました。最初にしたことは、ポインターを切り替えることでしたauto_ptr(別のスマート ポインターを使用しなかったのには理由があります)。のベクトルを作成しますauto_ptrが、 auto_ptr を関数に渡そうとしても機能し*(vector.begin())ません。

所有権を渡そうとしている関数コード (set_node としてのメンバー関数です):

struct Node {
    int weight;
    char litteral;
    auto_ptr<Node> childL;
    auto_ptr<Node> childR;
    void set_node(int w, char l, auto_ptr<Node>& L(), auto_ptr<Node>& R()){
        weight = w;
        litteral = l;
        childL = L;
        childR = R;
    }
};

これが私がそれを呼び出そうとする方法です(pはノードです):

p.set_node(w, '*', *nodes->begin(), *(nodes->begin()+1));

ベクトルの宣言方法は次のとおりです。

vector<auto_ptr<Node> >* nodes = new vector<auto_ptr<Node> >;
4

1 に答える 1