我想我知道为什么会收到此错误,但是我不确定如何纠正它。
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]'
在我看来,因为我正在将指向对象的指针 push 队列,因此队列仅接受该对象,从而导致此错误。我不知道该如何解决此问题,我们将不胜感激!
在此先感谢=]
最佳答案
更改用于推送对象的queue::push
语句:
q.push(*((*itr)->left()));
关于c++ - 错误无效转换C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7801688/