我有这个函数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*>>
或其他事情正在发生,但我似乎无法弄清楚这一点。
答案 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
是一个字符,而不是一个函数。从错误消息中,您可能会遇到类似的问题。