错误:与 'operator<<' 不匹配C++
在我想问这个问题之前,我已经看过 stackoverflow 上的一些线程(因为已经有几个线程了),但即使通过实现一些解决方案,它似乎也无法帮助我解决问题。要么我做错了。
无论如何,我得到的错误是:
error: no match for 'operator<<' in 'os << itr'
我的类是:
template <typename T>
class btree {
public:
btree(size_t maxNodeElems);
~btree() {}
struct node { // <- this is just a declaration of a private inner-class
list <T> elements;
node *lvl;
};
private:
size_t maxNodeElems;
node* root; // <- this is the actual private member
};
template <typename T>
btree<T>::btree(size_t maxNodeElems) {
if (maxNodeElems > 0) maxNodeElems = maxNodeElems;
root = new node;
root->lvl = new node[maxNodeElems+1];
}
template <typename T>
pair <typename btree<T>::iterator, bool> btree <T>::insert (const T& elem) {
root->elements.push_back(elem);
root->elements.sort();
std::pair <typename btree<T>::iterator, bool> e;
return e;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const btree<T>& tree) {
class list <T>::iterator itr = tree.root->elements.begin();
for (; itr != tree.root->elements.end(); ++itr) os << itr;
return os;
}
我很清楚我的插入没有返回任何内容,但我还没有完成该函数的实现,我只是想测试如何获取目前不在列表中的元素。有人可以告诉我我做错了什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
*itr
而不是itr
:这是所需的行为。
现在,要使其正常工作,您必须确保类型
T
存在operator<<
,该类型基本上是*itr
的类型。除了手动循环之外,您还可以使用 std::copy :
Use
*itr
instead ofitr
:This is the desired behaviour.
Now, for this to work, you have to make sure that
operator<<
exists for typeT
which is basically the type of*itr
.Instead of manual loop, you could use
std::copy
as well: