J'ai regardé quelques threads sur stackoverflow avant de penser à poser cette question (car il y en a eu quelques-uns), mais même en implémentant certaines des solutions , ça ne semble pas aider mon problème. Ça ou je le fais mal.erreur: aucune correspondance pour 'operator <<' C++
Quoi qu'il en soit, comme il va, l'erreur que je reçois est:
error: no match for 'operator<<' in 'os << itr'
ma classe est:
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;
}
Je suis tout à fait conscient que mon insert ne retourne rien, mais je havre de paix Je n'ai pas fini d'implémenter cette fonction, j'essaie juste de tester comment retirer les éléments de la liste pour le moment. Quelqu'un peut-il me dire ce que je fais mal?
Vouliez-vous dire 'os << * ITR,' la place? – Flexo