我有這個功能,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,這對'>>'沒有問題。 –