0

これはめちゃくちゃなセクションです。_head->prev を nullptr に逆参照することを意図していますが、prev がない場合はクラッシュするため、そのクラッシュを処理しようとしています。に達すると

if( _head )
   (!_head->prev)

前がないのでぐちゃぐちゃ。この瞬間を処理して中断しないようにする if ステートメントの書き方がわかりません。prev がない場合は、 --_size tmpnode を削除して結果を返すようにしたいだけです。

template <class list>
list linked_list<list>::pop_front()
{
assert( !empty() );

node_ptr_t tmpNode(_head);
list result = _head->data;
if(_head->next)
    _head = _head->next;
else
    _head = _tail;


if ( _head ) 
    if(!_head->prev)
    {
        --_size;
        delete tmpNode;
        return result;
    }else{
    _head->prev = nullptr;
    }else {
    _tail = nullptr;
}
//_head ? _head->prev=nullptr : _tail=nullptr;

--_size;
delete tmpNode;
return result;

}

4

0 に答える 0