错误无效转换c++

error invalid conversion C++

本文关键字:c++ 转换 无效 错误      更新时间:2023-10-16

我想我知道为什么我得到这个错误,但我不确定如何纠正它。

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]'

在我看来,因为我将一个指向对象的指针压入队列,而队列只接受该对象,所以导致了这个错误。我迷失在如何解决这个问题,任何帮助将是最感激的!!

提前感谢=]

修改queue::push语句的push对象:

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