C++/错误“没有匹配的调用函数

标签 c++ function call match

编译下面的代码时,出现以下错误:

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);
}

错误从何而来?

最佳答案

iterador的定义中,const struct Nodo* actual;在全局命名空间中引入了Nodo,因为名字没有找到,所以iterador 的构造函数声明实际上是iterador(const diccTrie* d, const::Nodo* n),而不是iterador(const diccTrie* d, const diccTrie::Nodo* n).

可以在类diccTrie中的iterador定义前添加struct Nodo;的前向声明。然后在iterador的构造函数的声明中,会找到diccTrie::Nodo

关于C++/错误“没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221985/

相关文章:

c++ - 高斯模糊 C++(无法显示完整图像)

C 从两个不同的 c 文件返回数组指针,以便在不允许全局的函数中使用

c - 参数过多 - 带 int 参数的函数

javascript - 如何从函数中获取选定的元素并将其作为另一个函数的参数传递

javascript - 如何在成功和错误这两种情况下有效地调用 setState?

javascript - 使用 JS 调用编辑 $_SESSION

hook - 安卓应用程序: java/JNI call hooking strategies

java - 如何在 C++ 中编写具有多个数据字段的类 Java 枚举类?

c++ - 提取多个单词到一个字符串变量

以指针为返回值的C++嵌套函数