C ++ / ошибка "нет соответствующей функции вызова - PullRequest
0 голосов
/ 22 ноября 2011

При компиляции кода ниже я получаю следующую ошибку:

error: no matching function for call to 'diccTrie::iterador::iterador(const diccTrie* const, diccTrie::Nodo* const&)'

class diccTrie{
public:
/* ... */
 class iterador{    
    private:
        const diccTrie* diccionario;
        const struct Nodo* actual;

        friend class diccTrie;

        iterador(const diccTrie* d, const Nodo* n): diccionario(d), actual(n){}
    };

    iterador crearIt() const;
private:

    struct Nodo
        {
            Nodo(const char c) :  padre(NULL), hijos(aed2::Lista<Nodo*>::Lista()), clave(c), significado(NULL) {};

            ~Nodo(){
                delete padre;
                delete significado;
                hijos.~Lista();
            }


            bool operator==(const Nodo& otro) const{
                if(otro.hijos.Longitud() != hijos.Longitud()){
                    return false;
                }
                else{
                    return otro.hijos == hijos && otro.padre == padre && otro.clave == clave && otro.significado == significado;
                }
            }

            Nodo* padre;
            aed2::Lista<Nodo*> hijos;
            char clave;
            const int* significado;
            };
    Nodo* raiz;

};

Ошибка возникает в diccTrie::clearIt, который реализован как

diccTrie::iterador diccTrie::crearIt() const{
    return iterador(this, raiz);
}

Откуда берется ошибка?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

В определении iterador, const struct Nodo* actual; введено Nodo в глобальном пространстве имен, так как имя не найдено, поэтому объявление конструктора iterador фактически iterador(const diccTrie* d, const ::Nodo* n), но не iterador(const diccTrie* d, const diccTrie::Nodo* n) .

Вы можете добавить предварительное объявление struct Nodo; перед определением iterador в классе diccTrie. Тогда в объявлении конструктора iterador будет найден diccTrie::Nodo.

1 голос
/ 22 ноября 2011

Как насчет сделать конструктор общедоступным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...