type不提供调用操作符

Jul*_*ien 7 c++ c++11

我有这个函数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;
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

vector<Node*> order2 = order(nodes, deps);
Run Code Online (Sandbox Code Playgroud)

但是,编译器会出现此错误:

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.
Run Code Online (Sandbox Code Playgroud)

出了什么问题?'std::__1::vector<Node *, std::__1::allocator<Node *> >'似乎暗示有一个vector<Node*, <Node*>>或某个事情正在发生,但我似乎无法弄清楚这一点.

Ami*_*ory 7

如果没有发布更完整的代码,有点难以辨别,但请考虑以下事项:

int order(int j, int k)
{   
    return 3;
}   

int main(int argc, char *argv[])
{   
    char order;

    // order(2, 3);                                                
}
Run Code Online (Sandbox Code Playgroud)

这段代码很好.但是,没有评论

    // order(2, 3);                     
Run Code Online (Sandbox Code Playgroud)

导致它失败,因为在内main,order是一个角色,而不是一个功能.从错误消息中,您可能会遇到类似的问题.

  • 我会提到,它可以通过将 `order` 调用为 `::order` 来修复。 (2认同)
  • @Zereges 这是一个非常好的观点 - 谢谢。OTOH,也许仅仅明确地命名事物会更具可读性,不是吗? (2认同)