私は修正しようとしていたいくつかの欠陥のある 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> >;