に該当する機能:コール
btree.tem:98: instantiated from 'std::pair<typename btree<T>::iterator, bool> btree<T>::insert(const T&) [with T = char]'
test.cpp:13: instantiated from here
btree.tem:37: error: no matching function for call to 'btree<char>::addElem(std::_List_iterator<node<char>*>&, node<char>*&)'
btree.h:178: note: candidates are: void btree<T>::addElem(std::_List_iterator<node<T>*>&, node<T>&) [with T = char]
btree.tem:98: instantiated from 'std::pair<typename btree<T>::iterator, bool> btree<T>::insert(const T&) [with T = char]'
test.cpp:13: instantiated from here
btree.tem:48: error: no matching function for call to 'btree<char>::addElem(std::_List_iterator<node<char>*>&, node<char>*&)'
私のヘッダファイルの中に、私はこのセッター機能を持っている:
void addElem (std::_List_iterator<node<T>*>& itr, node <T>& n) {
neighbours.insert(itr, n);
}
と私は何が間違っているのか分からない。エラーは次のように呼び出すと発生します。
class list < node<T>* >::iterator itr = bt->level().begin();
node <T>*n = new node<T>(elem, bt->max());
bt->addElem(itr, n);
問題:あなたがこれを書くために持っているので、
あなたの人生を少し楽にし、typedefを使用してください。あなたはこれを行うためにもっと自分を愛するでしょう。それを超えて、あなたのコードを調べてください。あなたはどこかでタイプの不一致が起こっています。関数が何を取るかを見て、あなたの関数呼び出しが何を返すかを見てください。彼らは合同ですか?たとえば、std :: vectorはstd :: vector と同じ型ではありません。 –
なぜ 'std :: _ List_iterator'を使用していますか?これは内部実装の詳細です。 –
@ K-balloイテレータを 'addElem'関数に渡す方法がわからないので試してみました – SNpn