我有这个功能,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*>>
或某事正在发生,但我似乎无法弄清楚这一点。
编译器将'order'视为'std :: __ 1 :: vector>'类型的对象。因此,当您尝试调用该函数时,编译器会在此对象上查找调用运算符。检查如何声明订单功能或任何相冲突的声明。你也应该在第二个参数或顺序函数中的2'>'之间放一个空格。这可以被解释为一个'>>'运算符。 –
@BenjaminT谢谢 - 在这之前我已经用'order'声明了一些东西。对你的第二点,不C++ 11支持'>>'没有空格?忽略两个'''之间的空间是不是很好的风格? –
@BenjaminT这个问题被标记为C++ 11,这对'>>'没有问题。 –