ошибка недопустимого преобразования C

#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()));