类型不提供呼叫运算符

type does not provide a call operator

本文关键字:呼叫 运算符 类型      更新时间:2023-10-16

我有这个函数order,它返回vector<Node*>

vector<Node*> order(vector<string> nodes, vector<pair<string, string>> dependencies) {
             Graph graph = buildGraph(nodes, dependencies);
             vector<Node*> order = buildOrder(graph.getNodes());
             return order;
}

我这样称呼它:

vector<Node*> order2 = order(nodes, deps);

然而,编译器给出了以下错误:

error: type 'std::__1::vector<Node *, std::__1::allocator<Node *> >' does not provide a call operator
        vector<Node*> order2 = order(nodes, deps);
                               ^~~~~
1 error generated.

出了什么问题?'std::__1::vector<Node *, std::__1::allocator<Node *> >'似乎表明存在vector<Node*, <Node*>>或其他什么,但我似乎无法理解。

如果不发布更完整的代码,很难判断,但请考虑以下内容:

int order(int j, int k)
{   
    return 3;
}   
int main(int argc, char *argv[])
{   
    char order;
    // order(2, 3);                                                
}

此代码构建良好。但是,取消对的注释

    // order(2, 3);                     

导致它失败,因为在main中,order是一个字符,而不是一个函数。从错误消息来看,您可能有类似的问题。