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_;
}
};
。
お礼そんなに私は少なくともこのエラーに引っかかってきたを使用する必要があると思います。この
のようなポインタを構築することができません2時間。 –