【发布时间】:2011-12-10 18:34:23
【问题描述】:
在我想问这个问题之前,我已经查看了 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;
}
我很清楚我的插入没有返回任何内容,但是我还没有完成该功能的实现,我现在只是在尝试测试如何将元素从列表中取出。谁能告诉我我做错了什么?
【问题讨论】:
-
你的意思是
os << *itr;吗?
标签: c++ templates iterator compiler-errors