ошибка неверного преобразования C ++ - PullRequest
0 голосов
/ 18 октября 2011

Мне кажется, я знаю, почему я получаю эту ошибку, но я не уверен, как ее исправить ..

template <typename T>
std::ostream& operator<<(std::ostream& os, const btree<T>& 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 Ответ

2 голосов
/ 18 октября 2011

Изменить оператор queue::push для перемещения объекта:

q.push(*((*itr)->left()));
...