struct不能出现在常量表达式中;模板参数无效

时间:2014-10-14 16:01:49

标签: c++

此功能给我错误,例如:

错误:' vertice'不能出现在常量表达式

错误:模板参数1无效

错误:`iterator'没有命名类型

list< list<vertice> >::iterator extraiLista(string vertice, list< list<vertice> >& listaVertices){
    list< list<vertice> >::iterator itVert;

    for(itVert = listaVertices.begin(); itVert != listaVertices.end(); itVert++){
        list<vertice>::iterator aux = itVert->begin();
        if(aux->nome == vertice)
            return itVert;
    }

    return NULL;
}

&#39;顶点&#39;是我创建的结构,我在其他函数中使用它没有任何问题。只是这一个给我带来麻烦的。我认为问题可能出在迭代器上,但我在另一个函数中尝试了它并且它有效。

2 个答案:

答案 0 :(得分:2)

在函数中,vertice是函数参数的名称,而不是它隐藏的类型。

要参考类型,您可以详细说明:

list<class vertice>

或符合条件:

list<::vertice>    // assuming it's in the global namespace

但为参数选择不同的名称可能会更好。

答案 1 :(得分:1)

你至少犯了两个错误。


错误1:

string vertice, list< list<vertice> >

&#34;顶点&#34;不能同时是一个类型名称(如list<list<vertice> >)和变量(如string vertice中所示)。


错误2:

return NULL;

您的函数返回list<list<iterator> >。在C ++中,NULLintintlist<list<iterator> >没有投标。