2017-10-16 12 views
0

ノードのコンバーターで変換エラーが発生する理由を理解できません。ノードコンストラクターは最初のパラメーターとして 'const T &'を受け入れます。 insertメソッドがコンストラクタに渡されていますが、何らかの理由でまだそのエラーが発生しています。'const T'を 'template function'に変換できません

エラーC2440: '初期化するには、': 'にconstの録音' から変換することはできません「SortedListの<> ::ノード*

SortedListのは型である '私は中間に何も入力した場合のレコード' は<>角括弧内のすべてが消えます。

template <typename T> 
typename SortedList<T>::iterator SortedList<T>::insert(const T& data){ 
    Node* n(data); 
    iterator it_temp(n); 
    iterator sort(front_); 
    while (sort < it_temp){ 
     ++sort; 
} 
    n.next_ = sort.curr_; 
    n.prev_ = sort.curr_->prev_; 
    sort.curr_->prev_->next_ = n; 
    sort.curr_->prev_ = n; 
} 

誤差は、特にノード* nは、挿入機能で構築されているスローされる:

Listクラス:変換エラーがスローされる

class SortedList{ 
struct Node{ 
    T data_; 
    Node* next_; 
    Node* prev_; 
    Node(const T& data=T{},Node* nx=nullptr,Node* pr=nullptr){ 
     data_ = data; 
     next_ = nx; 
     prev_ = pr; 
    } 
}; 
Node* front_; 
Node* back_; 
public: 
class const_iterator{ 
    friend class SortedList; 
    protected: 
    Node* curr_; 
    const_iterator(Node* n){ 
     curr_ = n; 
    } 
    public: 
    const_iterator(){ 
     curr_ = nullptr; 
    } 
    const_iterator operator++(){ 
     curr_ = curr_->next_; 

     return *this; 
    } 
    const_iterator operator++(int){ //advances curr returns old 
     const_iterator old = *this; 
     curr_ = curr_->next_; 

     return old; 
    } 
    const_iterator operator--(){ 
     curr_ = curr_->prev_; 

     return *this; 
    } 
    const_iterator operator--(int){ 
     const_iterator temp = *this; 
     curr_ = curr_->prev_; 

     return temp; 
    } 
    bool operator==(const_iterator rhs){ 
     return curr_->data_ == rhs.curr_->data_; 
    } 
    bool operator!=(const_iterator rhs){ 
     return curr_->data_ != rhs.curr_->data_; 
    } 
    bool operator<(const_iterator rhs){ 
     return curr_->data_ < rhs.curr_->data_; 
    } 
    const T& operator*()const{ 
     return curr_->data_; 
    } 
}; 

答えて

1

あなたは、たとえば、new

Node* n = new Node(data); 
+0

お礼そんなに私は少なくともこのエラーに引っかかってきたを使用する必要があると思います。この

Node* n(data); 

のようなポインタを構築することができません2時間。 –

関連する問題