#c #compiler-errors #operator-overloading #b-tree
#c #ошибки компилятора #перегрузка оператора #b-дерево
Вопрос:
Я думаю, что знаю, почему я получаю эту ошибку, но я не уверен, как ее исправить..
template <typename T>
std::ostreamamp; operator<<(std::ostreamamp; os, const btree<T>amp; tree) {
queue < btree<T> > q;
class list <node<T>*>::iterator itr = bt.neighbours.begin();
for (; itr != bt.neighbours.end(); itr ) {
os << (*itr)->getItem() << " ";
// add all the btree's connected to this node to the queue
q.push((*itr)->left());
}
}
template <typename T>
class node {
public:
btree <T> * left() { return l; }
private:
btree <T> * l;
}
сообщение об ошибке, которое я получаю, является:
test.cpp:18: instantiated from here
btree.tem:125: error: invalid conversion from 'btree<char>*' to 'unsigned int'
btree.tem:125: error: initializing argument 1 of 'btree<T>::btree(size_t) [with T = char]'
мне кажется, что, поскольку я помещаю указатель на объект в очередь, где очередь принимает только объект, это вызывает эту ошибку. Я не понимаю, как решить эту проблему, любая помощь будет очень признательна!!
Заранее спасибо =]
Ответ №1:
Измените queue::push
инструкцию для перемещения объекта:
q.push(*((*itr)->left()));