type不提供调用操作符

时间:2016-07-30 06:27:25

标签: 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;
}

我称之为:

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*>>或其他事情正在发生,但我似乎无法弄清楚这一点。

1 个答案:

答案 0 :(得分:6)

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

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

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

    // order(2, 3);                                                
}

此代码构建正常。但是,取消注释

    // order(2, 3);                     

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