invalide de l'initialisation de la non-const de référence de type ‘int& "à partir d'un temporaire de type" Maclasse<int>::iterator*'

J'obtiens l'erreur suivante à partir de g++, tout en essayant d'ajouter un itérateur de soutien pour ma liste liée de classe.

LinkedList.hpp: En fonction de membre de Type& exscape::LinkedList<Type>::iterator::operator*() [Type = int]’: 
les tests.rpc:51: instancié à partir d'ici 
LinkedList.hpp:412: erreur: invalid initialisation de la non-const de référence de type ‘int& "à partir d'un temporaire de type" exscape::LinkedList<int>::iterator*’ 

Vraisemblablement pertinents extraits de code:

LinkedList.hpp:

template <typename Type>
class LinkedList {
    private:
        struct node {
            struct node *prev;
            struct node *next;
            Type data;
        };
    public:
        class iterator : public std::iterator<...> {
            node *p;

        public:
             Type &operator*();
        };
...
};

template <typename Type>
LinkedList<Type>::iterator::iterator(struct node *in_node) : p(in_node) {}

template <typename Type>
inline Type &LinkedList<Type>::iterator::operator*() {
    return this-p->data; /////Line 412
}

tests.cpp:

...
LinkedList<int> l1;
...
LinkedList<int>::iterator it;
for (it = l1.begin(); it != l1.end(); ++it) {
    std::cout << "Element: " << *it << std::endl; /////Line 51
}

J'ai googlé (et cherché SI, bien sûr), et vérifié mon code en vain - soit je suis absent quelque chose de base (aka. faire quelque chose de stupide), ou je suis pas les connaissances requises. Des conseils?

  • On dirait que vous pourriez avoir une faute de frappe sur la ligne 412
InformationsquelleAutor exscape | 2009-11-20