コレクションに要素を追加するには、const 参照ごとに 1 回とポインターごとに 1 回の 2 つの方法を提供します。
void push_back(const value_type *val) {
element *elem = new element(val);
//...
}
void push_back(const value_type &val) {
push_back(&val);
}
クラスはelement
値をポインターとして保持します。
class element {
private:
const value_type *value;
public:
element(const value_type *value):
value(value) {
}
~element() {
delete value;
}
要素がポップされるか、コレクションが削除されると、要素がポインタとして追加された場合、メモリを解放する必要があることは明らかです。ただし、要素が手動で割り当てられず、参照によって渡された場合、これはエラーを引き起こします。
要素がpush_back時に動的に割り当てられている場合、追加で保存する以外に、この問題を解決するオプションはありますか?